こんにちは、私は xml/xslt の初心者です。同じ名前のタグが複数ある以下の要件について、誰かが私を助けてくれますか
<SO_ServiceType>XXXX</SO_ServiceType>
<SO_ServiceType>YYYY</SO_ServiceType>
<SO_ServiceType>ZZZZ</SO_ServiceType>
各タグの値を反復して確認する方法
このソリューションは、各 SO_ServiceType ノードを「反復」します...
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="SO_ServiceType">
<xsl:if test="text()='ZZZZ'">
<sample>ZZZZ is the value</sample>
</xsl:if>
<node>
<xsl:value-of select="."/>
</node>
</xsl:template>
結果
<node>XXXX</node>
<node>YYYY</node>
<sample>ZZZZ is the value</sample>
<node>ZZZZ</node>
編集
text() が一致した場合にのみ結果ツリーに「true」を出力したい場合は、次のようにしますA-70-00
。
<xsl:template match="SO_ServiceType">
<xsl:if test="text()='A-70-00'">true</xsl:if>
</xsl:template>
XSLT は、入力を出力に変換する方法であることを思い出してください。XSLT では、目的の出力結果を得るために適用する必要があるルールを記述します。どのように出力を生成したいかではなく、入力ノードで何をしたいかを考えてみてください。
rene's answerに関するコメントから判断すると、おそらく「反復」する必要はまったくありません。一方または他方 (または両方) がノード セットである XPath 式で等値比較を行う場合、セット内のいずれかのノードが値と一致する場合、式は全体として成功します。したがって
<xsl:if test="/Data/SO_Service_Type = 'A-70-00'">true</xsl:if>
true
いずれかのSO_Service_Type
要素に値がある場合に生成されますA-70-00
- 必須ではありませfor-each
ん。