XML/XSL/Xpath は初めてで、一見単純な問題への回答を求めてこれらのボードを探しましたが、おそらく私は XSL に慣れていないため、これに対処する可能性のあるいくつかの回答を理解できません。
ドキュメントの別の場所に保存されているノード値の別のセットに一致するノードのセットを選択したいので、次のようにします。
<body>
<partlist>
<part>head</part>
<part>spleen</part>
<part>toe</part>
</partlist>
<parts>
<head>this is a head</head>
<spleen>this is a spleen</spleen>
<toe>big toe</toe>
<toe>big toe</toe>
<parts>
</body>
そのため、すべての「パーツ」を数えたいとしますが、「パーツ」のノード名がわからない場合は、名前が別のセットの値と等しいノードのセットに XPath expr を一致させる必要があります。ノードの...
私は XSL に慣れていないため、解決策が非常に単純であると想像できますが、XSL から単純な解決策を期待するのは確実に間違った道であることを理解するには十分な経験があります。
私の手続きベースの無知では、これは私が試したことです:
<xsl:template match="/">
<xsl:apply-templates select="partlist/part">
<xsl:with-param name="parts" select="parts"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="part">
<xsl:param name="parts"/>
<xsl:value-of select="count($parts[.])"/>
</xsl:template>
しかし、これは完全に間違っています。どんな助けでも大歓迎です。
編集:答えてくれてありがとう、しかし私は理解されていないと思います-私は完全に明確ではなかったので、私のせいです...必要なのは、一致するノードがあるかどうかを教えてくれる単一の結果です参照セットのノード値...クエリを変更すると思います。カウントのリストを出力しようとしていないため、セットをセットと照合して合計をカウントしようとしています...しかし、私にさせてくださいそのようなことが可能であれば、XSLで明確にしてください..これが上記の私のコードで、私の意図を明確にするためにわずかに変更されています:
<xsl:template match="/">
<xsl:apply-templates select="partlist/part">
<xsl:with-param name="parts" select="parts"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="part">
<xsl:param name="parts"/>
<xsl:if select="count($parts[.]) > 0">1</xsl:if>
</xsl:template>
上記を xml doc の例に適用すると、次のように出力されます。
1
これは理にかなっていますか?
編集:XSL 1.0に限定されていることも明記する必要があります