これは私のXMLドキュメント(小さなスニペット)です。ここでXSLT 2.0の子要素に基づいて特定のXML要素を取得する方法は?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:body>
<w:p> <!-- Current Node -->
<w:r>
<w:t>
This is the
</w:t>
</w:r>
<w:r>
<w:pict>
<w:p>
<w:r>
<w:t>
I dont need this
</w:t>
</w:r>
</w:p>
</w:pict>
</w:r>
<w:r>
<w:pict>
<w:p>
<w:r>
<w:t>
I dont need this too
</w:t>
</w:r>
</w:p>
</w:pict>
</w:r>
<w:r>
<w:t>
text that i need to retrieve...
</w:t>
</w:r>
</w:p>
</w:body>
</w:document>
、私は<w:r><w:t>
値を取得し、<w:r>
は、その中に子<w:pict>
を含むべきではないということにしたいです。 (形式上取得するには、このXSLT必要はないどのような変更を教えてください)
<paragraph>This is the text that i need to retrieve...</paragraph>
、これが私のXSLTのスニペットです::だから、私の上記のXMLドキュメントごとに、私は次のような出力を生成したい
<xsl:choose>
<xsl:when test="self::w:p[//w:r/w:t[not(ancestor::w:pict)]]">
<Paragraph>
<xsl:apply-templates select="./w:t[not(ancestor::w:pict)]" />
</Paragraph>
</xsl:when>
</xsl:choose>
<xsl:template match="w:t">
<xsl:value-of select="." />
</xsl:template>
しかし、それは動作していません...
この問題を解決するために私を案内してください。あなたが任意のレベルではなく、祖先としてアウトw:pict
でw:r/w:t
をretriveする必要がある場合は、
w:r/w:t
しかしあなたを:あなたの現在のノードがある場合は、あなたの現在の例では
テキスト '内に含まれている「私は、これが必要いけません」 'であり、「」には子「」が含まれていません。もう少しあなたの要件を明確にすることはできますか?子要素ではなく、祖先要素をチェックする必要があるように思えます。 –
@TimC:はいtim.に等しくないの値を取得します。 –
Saravanan