1
XSLT 1.0では、ファンクションキー()を入力XML全体ではなく子ノード内で検索する方法はありますか。 私の入力XMLは、私が書かれているxml全体ではなく、子ノード内で検索するようにkey()を制限する方法
<a>
<b>
<c>
<d name="1"/>
<d name="2"/>
<d name="3"/>
<d name="1"/>
</c>
</b>
<b>
<c>
<d name="1"/>
<d name="2"/>
</c>
</b>
</a>
XSLTは、私は必要なもの
<?xml version='1.0' ?>
<start>
<inside>
<d name="1"/>
<d name="1"/>
<d name="1"/>
</inside>
<inside>
<d name="1"/>
<d name="1"/>
<d name="1"/>
</inside>
</start>
になり
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="findD" match="d" use="@name"/>
<xsl:template match="/">
<start>
<xsl:apply-templates select="a/b/c"/>
</start>
</xsl:template>
<xsl:template match="a/b/c">
<inside>
<xsl:for-each select="key('findD', '1')">
<xsl:copy-of select="."/>
</xsl:for-each>
</inside>
</xsl:template>
です
のようなものですこれは、すべてのcノードの3つのノード 'd'(xmlに存在)をすべて返します。私が必要とするのは、対応するcノード(キーが呼び出されたとき)内にdノードを取得することです。
私は、ノードcの値に基づいて結果を連結できるkey()内でconcatの使用を見てきました。 XML全体ではなく、ノード内だけを見るためにkey()を言う他の方法はありますか?ここで
私の例のXSLTにコピー貼り付けエラーがあります。キー機能の使用は------ --------- ------ \t \t \t ----------- –
DJ1
コメントにコードを投稿しないでください。 –
あなたは何をしようとしているのか分かりません。一般的に、親ノードのキーを制限するには、その値を親ノードのIDと連結します。ここでの例を参照してください:http://stackoverflow.com/questions/33793795/xslt-ignore-duplicate-elements-in-シングル・ノード・アット・タイム/ 33796222#33796222 –