PDA

View Full Version : Why do I get <w:p> w/o attributes?


senglory
11-03-2009, 10:30 PM
XML:


<w:document xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml">
<w:body>
<w:p><w:smartTag w:uri="http://schemas.openxmlformats.org/2006/smarttags" w:element="livetechdocs"><w:smartTagPr><w:attr w:name="remap"></w:attr></w:smartTagPr></w:smartTag>
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="8186"></w:tab>
</w:tabs>
<w:rPr>
<w:sz w:val="14"></w:sz>
<w:szCs w:val="14"></w:szCs>
</w:rPr>
</w:pPr>
</w:p>
</w:body>
</w:document>


XSL:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:WX="http://schemas.microsoft.com/office/word/2003/auxHint"
xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
xmlns:w10="urn:schemas-microsoft-com:office:word"
xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
xmlns:rs="http://schemas.openxmlformats.org/package/2006/relationships"
version="1.0">

<xsl:output method="html" encoding="utf-8" omit-xml-declaration="no" indent="yes"/>


<!-- http://stackoverflow.com/questions/1312210/conditional-auto-increment-in-xsl -->
<xsl:template match="w:p[count(ancestor::w:tbl)=0]|w:tbl[count(ancestor::w:tbl)=0]|w:footnote[count(ancestor::w:tbl)=0]|w:endnote[count(ancestor::w:tbl)=0]|w:docPart[count(ancestor::w:tbl)=0]">

<xsl:copy>
<w:smartTag w:uri="http://schemas.openxmlformats.org/2006/smarttags" w:element="livetechdocs">
<w:smartTagPr>
<xsl:element name="w:attr">
<xsl:attribute name="w:name">remap</xsl:attribute>
</xsl:element>
</w:smartTagPr>
</w:smartTag>

<xsl:apply-templates/>

</xsl:copy>

</xsl:template>


<xsl:template match="node() | text()">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>

</xsl:stylesheet>



Why do I get <w:p> w/o attributes?

Thanks for advise.

rnd me
11-03-2009, 11:16 PM
1. <w: p> has no attribs in the example source.

2. you never copy the attribs, just nodes and text...

try copy-of instead.

also, just an aside:
since 0 is false,
w:footnote[count(ancestor::w:tbl)=0]
is the same as
w:footnote[count(ancestor::w:tbl)]
which, since a node is true, is likely the same as just:
w:footnote[ancestor::w:tb]

senglory
11-03-2009, 11:32 PM
sorry, the original XML is

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml">
<w:body>
<w:p w:rsidR="000E17AA" w:rsidRDefault="000E17AA">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="8186"/>
</w:tabs>
<w:rPr>
<w:sz w:val="14"/>
<w:szCs w:val="14"/>
</w:rPr>
</w:pPr>
</w:p>
</w:body>
</w:document>

senglory
11-03-2009, 11:35 PM
1. <w: p> has no attribs in the example source.

2. you never copy the attribs, just nodes and text...

try copy-of instead.

also, just an aside:
since 0 is false,
w:footnote[count(ancestor::w:tbl)=0]
is the same as
w:footnote[count(ancestor::w:tbl)]
which, since a node is true, is likely the same as just:
w:footnote[ancestor::w:tb]


btw, if I want to select nodes that has NO w:tbl as their ancestors what should i write?

rnd me
11-04-2009, 09:35 PM
btw, if I want to select nodes that has NO w:tbl as their ancestors what should i write?

yes, i made a mistake in the exmaple i posted, flipping the conditional halfway, sorry about that.

<copy-of select="w:p[not(ancestor::w:tbl)]" />