<p>
すべてのタグを
変換し 、これらのノードの名前を に変更してい ます ( を使用して) 要素 内に <Body_Text>
あるという条件で。
私のコードはこれを行っていますが、 要素 の外側にある すべての要素を省略し ています。これは望ましくありません。
<body>
xsl:if
<p>
<body>
変換する XML は次のとおりです。
<root>
<p>asdf</p>
<body>
<p>asdfasdf</p>
<p>asdfasdf</p>
</body>
<footer>
<p>asdf</p>
</footer>
</root>
... XSL は次のとおりです。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>
<!-- identity rule -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!-- Body_Text -->
<xsl:template match="p">
<xsl:if test="parent::body">
<Body_Text>
<xsl:apply-templates select="@*|node()"/>
</Body_Text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
...そして、ここに望ましくない結果があります( <p>
要素の外側にあるすべての要素を 省略しています<body>
。これはやりたくないことです):
<root>
<body>
<Body_Text>asdfasdf</Body_Text>
<Body_Text>asdfasdf</Body_Text>
</body>
<footer/>
</root>
これはhttp://xslt.online-toolz.com/tools/xslt-transformation.php
でテストされました。
これは私が得ていない望ましい結果です:
<root>
<p>asdf</p>
<body>
<Body_Text>asdfasdf</Body_Text>
<Body_Text>asdfasdf</Body_Text>
</body>
<footer>
<p>asdf</p>
</footer>
</root>