writerfilter/source/ooxml/factoryimpl.xsl  |    3 ++-
 writerfilter/source/ooxml/model.xml        |    2 ++
 writerfilter/source/ooxml/namespaceids.xsl |    3 ++-
 3 files changed, 6 insertions(+), 2 deletions(-)

New commits:
commit f9bf15e19ec823a58ee32bf94da81f3bb1a147bc
Author: Miklos Vajna <vmik...@collabora.co.uk>
Date:   Fri Mar 7 11:45:39 2014 +0100

    writerfilter: initial strict DOCX support
    
    The generate-id() code is just necessary avoid duplicated elements in
    the for-each loop. http://mahahegde.com/xslt-distinct-values/ has a
    detailed description of the technique used here.
    
    Change-Id: I647efe9d4a0834d3756fe9fa6d706ba6ba4e00f1

diff --git a/writerfilter/source/ooxml/factoryimpl.xsl 
b/writerfilter/source/ooxml/factoryimpl.xsl
index 0ac9e56..2fb5139 100644
--- a/writerfilter/source/ooxml/factoryimpl.xsl
+++ b/writerfilter/source/ooxml/factoryimpl.xsl
@@ -196,6 +196,7 @@ uno::Reference&lt; xml::sax::XFastContextHandler &gt; 
OOXMLFactory::createFastCh
 </xsl:text>
 </xsl:template>
 
+<xsl:key name="namespaces-by-id" match="namespace-alias" use="@id"/>
 <xsl:template name="fasttokentoid">
   <xsl:text>
 namespace tokenmap {
@@ -217,7 +218,7 @@ string fastTokenToId(sal_uInt32 nToken)
 
     switch (nToken &amp; 0xffff0000)
     {</xsl:text>
-    <xsl:for-each select="//namespace-alias">
+    <xsl:for-each select="//namespace-alias[generate-id() = 
generate-id(key('namespaces-by-id', @id)[1])]">
       <xsl:text>
     case NS_</xsl:text>
     <xsl:value-of select="@alias"/>
diff --git a/writerfilter/source/ooxml/model.xml 
b/writerfilter/source/ooxml/model.xml
index 70289f5..12c47c4 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -23,6 +23,7 @@
   <namespace-alias 
name="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme";
 alias="theme" id="officeRelTheme"/>
   <namespace-alias 
name="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"; 
alias="wordprocessingDrawing" id="dmlWordDr"/>
   <namespace-alias 
name="http://schemas.openxmlformats.org/drawingml/2006/main"; alias="drawingml" 
id="dml"/>
+  <namespace-alias name="http://purl.oclc.org/ooxml/drawingml/main"; 
alias="drawingml" id="dml"/>
   <namespace-alias name="urn:schemas-microsoft-com:vml" alias="vml" id="vml"/>
   <namespace-alias 
name="http://schemas.openxmlformats.org/drawingml/2006/picture"; alias="picture" 
id="dmlPicture"/>
   <namespace-alias 
name="http://schemas.openxmlformats.org/drawingml/2006/diagram"; alias="diagram" 
id="dmlDiagram"/>
@@ -32,6 +33,7 @@
   <namespace-alias 
name="http://schemas.openxmlformats.org/drawingml/2006/chart"; alias="chart" 
id="dmlChart"/>
   <namespace-alias name="urn:schemas-microsoft-com:office:word" 
alias="vml_wordprocessingDrawing" id="vmlWord"/>
   <namespace-alias 
name="http://schemas.openxmlformats.org/wordprocessingml/2006/main"; 
alias="wordprocessingml" id="doc"/>
+  <namespace-alias name="http://purl.oclc.org/ooxml/wordprocessingml/main"; 
alias="wordprocessingml" id="doc"/>
   <namespace-alias 
name="http://schemas.openxmlformats.org/officeDocument/2006/math"; alias="math" 
id="officeMath"/>
   <namespace-alias 
name="http://schemas.openxmlformats.org/schemaLibrary/2006/main"; 
alias="schemaLibrary" id="schema"/>
   <namespace-alias 
name="http://schemas.openxmlformats.org/markup-compatibility/2006"; alias="mce" 
id="mce"/>
diff --git a/writerfilter/source/ooxml/namespaceids.xsl 
b/writerfilter/source/ooxml/namespaceids.xsl
index ea56acc..d92593d 100644
--- a/writerfilter/source/ooxml/namespaceids.xsl
+++ b/writerfilter/source/ooxml/namespaceids.xsl
@@ -51,8 +51,9 @@
   
   <xsl:include href="factorytools.xsl"/>
 
+<xsl:key name="namespaces-by-id" match="namespace-alias" use="@id"/>
 <xsl:template name="namespaceids">
-  <xsl:for-each select="//namespace-alias">
+  <xsl:for-each select="//namespace-alias[generate-id() = 
generate-id(key('namespaces-by-id', @id)[1])]">
     <xsl:text>
 const sal_uInt32 </xsl:text>
 <xsl:call-template name="namespaceid"/>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to