summaryrefslogtreecommitdiff
path: root/writerfilter/source/ooxml/factoryimpl_ns.xsl
diff options
context:
space:
mode:
Diffstat (limited to 'writerfilter/source/ooxml/factoryimpl_ns.xsl')
-rw-r--r--writerfilter/source/ooxml/factoryimpl_ns.xsl99
1 files changed, 54 insertions, 45 deletions
diff --git a/writerfilter/source/ooxml/factoryimpl_ns.xsl b/writerfilter/source/ooxml/factoryimpl_ns.xsl
index 55d986932aec..533c3d16ae23 100644
--- a/writerfilter/source/ooxml/factoryimpl_ns.xsl
+++ b/writerfilter/source/ooxml/factoryimpl_ns.xsl
@@ -150,7 +150,20 @@ for a rng:define
-->
<xsl:template name="factoryattributetoresourcemapinner">
+ <xsl:variable name="defname" select="@name"/>
+ <xsl:for-each select=".//rng:ref[not(ancestor::rng:element or ancestor::rng:attribute)]">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:for-each select="ancestor::namespace/rng:grammar/rng:define[@name=$name]">
+ <xsl:call-template name="factoryattributetoresourcemapinner"/>
+ </xsl:for-each>
+ </xsl:for-each>
+
<xsl:for-each select=".//rng:attribute">
+ <xsl:if test="position()=1">
+ <xsl:text>
+ // </xsl:text>
+ <xsl:value-of select="$defname"/>
+ </xsl:if>
<xsl:variable name="mynsid" select="generate-id(ancestor::namespace)"/>
<xsl:variable name="resource">
<xsl:for-each select="rng:ref">
@@ -161,6 +174,9 @@ for a rng:define
<xsl:for-each select=".//rng:text">
<xsl:text>String</xsl:text>
</xsl:for-each>
+ <xsl:for-each select=".//rng:data[@type='base64Binary']">
+ <xsl:text>String</xsl:text>
+ </xsl:for-each>
</xsl:variable>
<xsl:variable name="refdefine1">
@@ -201,13 +217,6 @@ for a rng:define
</xsl:choose>
</xsl:for-each>
-
- <xsl:for-each select=".//rng:ref[not(ancestor::rng:element or ancestor::rng:attribute)]">
- <xsl:variable name="name" select="@name"/>
- <xsl:for-each select="ancestor::namespace/rng:grammar/rng:define[@name=$name]">
- <xsl:call-template name="factoryattributetoresourcemapinner"/>
- </xsl:for-each>
- </xsl:for-each>
</xsl:template>
<!-- factoryattributetoresourcemap -->
@@ -283,25 +292,6 @@ ListValueMapPointer </xsl:text>
<!-- factoryelementtoresorucemapinner -->
<xsl:template name="factorycreateelementmapinner">
- <xsl:for-each select=".//rng:element">
- <xsl:variable name="resource">
- <xsl:for-each select="rng:ref">
- <xsl:call-template name="contextresource"/>
- </xsl:for-each>
- </xsl:variable>
- <xsl:if test="string-length($resource) > 0">
- <xsl:text>
- (*pMap)[</xsl:text>
- <xsl:call-template name="fasttoken"/>
- <xsl:text>] = CreateElement(RT_</xsl:text>
- <xsl:value-of select="$resource"/>
- <xsl:text>, </xsl:text>
- <xsl:for-each select="rng:ref">
- <xsl:call-template name="idforref"/>
- </xsl:for-each>
- <xsl:text>);</xsl:text>
- </xsl:if>
- </xsl:for-each>
<xsl:for-each select=".//rng:ref[not(ancestor::rng:element or ancestor::rng:attribute)]">
<xsl:variable name="name" select="@name"/>
<xsl:variable name="block">
@@ -329,6 +319,25 @@ ListValueMapPointer </xsl:text>
<xsl:value-of select="$block1"/>
</xsl:if>
</xsl:for-each>
+ <xsl:for-each select=".//rng:element">
+ <xsl:variable name="resource">
+ <xsl:for-each select="rng:ref">
+ <xsl:call-template name="contextresource"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="string-length($resource) > 0">
+ <xsl:text>
+ (*pMap)[</xsl:text>
+ <xsl:call-template name="fasttoken"/>
+ <xsl:text>] = CreateElement(RT_</xsl:text>
+ <xsl:value-of select="$resource"/>
+ <xsl:text>, </xsl:text>
+ <xsl:for-each select="rng:ref">
+ <xsl:call-template name="idforref"/>
+ </xsl:for-each>
+ <xsl:text>);</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
</xsl:template>
<xsl:template name="factorycreateelementmapfromstart">
@@ -610,6 +619,25 @@ string </xsl:text>
<xsl:template name="factorytokentoidmapinner">
<xsl:variable name="name" select="@name"/>
+ <xsl:for-each select=".//rng:ref[not(ancestor::rng:element or ancestor::rng:attribute)]">
+ <xsl:variable name="refname" select="@name"/>
+ <xsl:variable name="refblock1">
+ <xsl:for-each
+ select="ancestor::rng:grammar/rng:define[@name=$refname]">
+ <xsl:call-template name="factorytokentoidmapinner"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="string-length($refblock1) = 0">
+ <xsl:for-each select="ancestor::model/namespace/rng:grammar/rng:define[@name=$refname]">
+ <xsl:call-template name="factorytokentoidmapinner"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$refblock1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
<xsl:variable name="body">
<xsl:for-each select="ancestor::namespace/resource[@name=$name]">
<xsl:for-each select="element[@tokenid]|attribute[@tokenid]">
@@ -630,25 +658,6 @@ string </xsl:text>
<xsl:value-of select="$name"/>
<xsl:value-of select="$body"/>
</xsl:if>
- <xsl:for-each select=".//rng:ref[not(ancestor::rng:element or ancestor::rng:attribute)]">
- <xsl:variable name="refname" select="@name"/>
- <xsl:variable name="refblock1">
- <xsl:for-each
- select="ancestor::rng:grammar/rng:define[@name=$refname]">
- <xsl:call-template name="factorytokentoidmapinner"/>
- </xsl:for-each>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="string-length($refblock1) = 0">
- <xsl:for-each select="ancestor::model/namespace/rng:grammar/rng:define[@name=$refname]">
- <xsl:call-template name="factorytokentoidmapinner"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$refblock1"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
</xsl:template>
<xsl:template name="factorytokentoidmap">