0

こんにちは、私は xml/xslt の初心者です。同じ名前のタグが複数ある以下の要件について、誰かが私を助けてくれますか

<SO_ServiceType>XXXX</SO_ServiceType>
<SO_ServiceType>YYYY</SO_ServiceType>
<SO_ServiceType>ZZZZ</SO_ServiceType>

各タグの値を反復して確認する方法

4

2 に答える 2

0

このソリューションは、各 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 では、目的の出力結果を得るために適用する必要があるルールを記述します。どのように出力を生成したいかではなく、入力ノードで何をしたいかを考えてみてください。

于 2013-07-15T09:03:49.140 に答える
0

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ん。

于 2013-07-15T10:49:53.423 に答える