質問
XMLスニペット:
<AA>
<BB>foo</BB>
<CC>bar</CC>
<DD>baz</DD>
<EE>bar</EE>
</AA>
方法を選択すべての子ノードをぶら下げるフィールドの <AA>
してい bar
てんですか?上記の例ではいを選択したい <CC>
や <EE>
.いていこうと思い、ソリューションがようなもの:
<xsl:template match="AA">
<xsl:for-each select="???" />
</xsl:template>
解決
一つの最も簡単なソリューションOPの質問は、以下のXPath表現:
*/*[.='bar']
いことに注意してくださいXSLT指導が関与する--これはXPath表現, で質問にこのタグ付きXPath.
これからが使用できるこのXPath表現XSLTなど、様々などに適用テンプレートのすべての選択したノード.
例えば、以下では、XSLT変換、XMLドキュメント生産も、すべての要素が子どもの <AA>
内容は一致いたしません "bar"
削除:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="AA">
<xsl:copy>
<xsl:apply-templates select="*[. = 'bar']"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
この変換が適用されますが、元のXML文書:
<AA>
<BB>foo</BB>
<CC>bar</CC>
<DD>baz</DD>
<EE>bar</EE>
</AA>
した結果がでる:
<AA>
<CC>bar</CC>
<EE>bar</EE>
</AA>
い注:
で試合のパターンまたはしないを指定する必要があり、絶対XPath表現が相対的からかもしれないけど、僕のXPath表現が自然に簡単にこの試合のパターン:
*[. = 'bar']
所属していません StackOverflow