xsl-list
[Top] [All Lists]

Re: [xsl] Namespace and key function issue?

2010-10-12 15:36:41
At 2010-10-12 15:22 -0500, russurquhart1(_at_)verizon(_dot_)net wrote:
I have a problem, that i believe is related to namespaces, but as those are still pretty new to me, i can't figure this out.

I have an open office xml document of the following:
...
My stylesheet, which is based on the open office docbook export xsl, is of the following form:
...
However, when i run this, inside of open office, the test fails. In tests, where i've run the code, without a test, nothing is returned.

I ran your test outside of OpenOffice and it works fine ... transcript below.

Can you review your output evidence and then confirm all of the updates to your XML filters were done correctly?

I hope this helps.

. . . . . . . . . . Ken

p.s. is there a reason you used <xsl:element> instead of just the literal result element <Emphasis type="bold">? You've already gone to the effort of pruning your operation tree of the stylesheet's namespace nodes related to OpenOffice.

~/t/ftemp $ cat russ.xml
<?xml version='1.0' encoding="utf-8"?>
<office:document-content xmlns:text="http://openoffice.org/2000/text";
xmlns:office="http://openoffice.org/2000/office";
xmlns:style="http://openoffice.org/2000/style";
xmlns:fo="http://www.w3.org/1999/XSL/Format";
>...
<office:automatic-styles>...
<style:style style:name="T6" style:family="text">
  <style:text-properties style:text-position="0% 100%" />
</style:style>
<style:style style:name="T7" style:family="text">
  <style:text-properties style:text-position="0% 100%" fo:font-weight="bold"
  style:font-weight-asian="bold" style:font-weight-complex="bold" />
</style:style>
...
</office:automatic-styles>
<office:body>
...
<text:p text:style-name="P1">
  <text:span text:style-name="T21">Legend(norm): V</text:span>
  <text:span text:style-name="T2">sub</text:span>
  <text:span text:style-name="T7">Bold</text:span>
  <text:span text:style-name="T8">V</text:span>
  <text:span text:style-name="T9">Italic</text:span>
  <text:span text:style-name="T15">V</text:span>
  <text:span text:style-name="T3">sub-bold</text:span>
</text:p>
...
</office:body>
</office:document-content>
~/t/ftemp $ cat russ.xsl
<xsl:stylesheet version="1.0" xmlns:style="http://openoffice.org/2000/style";
xmlns:text="http://openoffice.org/2000/text";
xmlns:office="http://openoffice.org/2000/office";
xmlns:table="http://openoffice.org/2000/table";
xmlns:draw="http://openoffice.org/2000/drawing";
xmlns:fo="http://www.w3.org/1999/XSL/Format";
xmlns:xlink="http://www.w3.org/1999/xlink";
xmlns:dc="http://purl.org/dc/elements/1.1/";
xmlns:meta="http://openoffice.org/2000/meta";
xmlns:number="http://openoffice.org/2000/datastyle";
xmlns:svg="http://www.w3.org/2000/svg";
xmlns:chart="http://openoffice.org/2000/chart";
xmlns:dr3d="http://openoffice.org/2000/dr3d";
xmlns:math="http://www.w3.org/1998/Math/MathML";
xmlns:form="http://openoffice.org/2000/form";
xmlns:script="http://openoffice.org/2000/script";
xmlns:config="http://openoffice.org/2001/config"; office:class="text"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
exclude-result-prefixes="office meta table number dc fo xlink chart math script xsl draw svg dr3d form config text style">

<xsl:output method="xml" indent="yes" omit-xml-declaration="no" version="1.0"
  encoding="UTF-8" doctype-public="-//OASIS//DTD DocBook XML V4.1.2//EN"
  doctype-system="http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"; />

<!-- My key function to return the style:style element based on the style:name attribute. -->
  <xsl:key name="style:find_style" match="style:style" use="@style:name" />
  <!-- My template is this: -->
  <xsl:template match="text:span">
    <xsl:choose>
<xsl:when test="key ('style:find_style', @text:style-name)/style:text-properties/@fo:font-weight='bold'">

        <xsl:element name="Emphasis">
          <xsl:attribute name="type">
            <xsl:text>bold</xsl:text>
          </xsl:attribute>
          <xsl:value-of select="." />
        </xsl:element>
      </xsl:when>
      <xsl:otherwise>
        <xsl:apply-templates />
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

<xsl:template match="/">
  <xsl:apply-templates select="//text:span"/>
</xsl:template>

</xsl:stylesheet>
~/t/ftemp $ xslt russ.xml russ.xsl
<?xml version="1.0" encoding="UTF-8"?>Legend(norm): Vsub
<!DOCTYPE Emphasis
PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";>
<Emphasis type="bold">Bold</Emphasis>VItalicVsub-bold~/t/ftemp $
~/t/ftemp $


--
XSLT/XQuery training:   after http://XMLPrague.cz 2011-03-28/04-01
Vote for your XML training:   http://www.CraneSoftwrights.com/s/i/
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
G. Ken Holman                 mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--