检查XML 1.0中节点中的特定值不起作用

时间:2014-03-11 14:18:13

标签: xml xslt xml-parsing xslt-1.0

我正在尝试获取XML文件中的特定值,并在测试时使用匹配时更改文本。

问题在于它实际上并没有得到它。

XSL:

<xsl:template match="/root/system/coolname">
    <xsl:choose>
      <xsl:when test=".='coolynamey'">
        <xsl:text>Male</xsl:text>
      </xsl:when>
      <xsl:otherwise>
       <xsl:text>Female</xsl:text>
      </xsl:otherwise>
    </xsl:choose>
</xsl:template>

XML:

<root>
  <system>
     <coolname>coolynamey</coolname>
  </system>
</root>

所以我想要的是:如果节点包含coolynamey,则将其更改为Male。如果没有,请将其设为女性。现在它做的是输出“女性”而不是男性,即使存在“coolynamey”。

1 个答案:

答案 0 :(得分:2)

  

嗯。对我不起作用。无论如何,谢谢Müller先生。

嗯,这是一个微不足道的转变,我相信它有效。

输入1

<root>
  <system>
     <coolname>coolynamey</coolname>
  </system>
</root>

输入2

<root>
  <system>
    <coolname>somethingelse</coolname>
</system>
</root>

<强>样式表

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

    <xsl:output method="text"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="/root/system/coolname">
        <xsl:choose>
          <xsl:when test=".='coolynamey'">
            <xsl:text>Male</xsl:text>
          </xsl:when>
          <xsl:otherwise>
           <xsl:text>Female</xsl:text>
          </xsl:otherwise>
        </xsl:choose>
    </xsl:template>

</xsl:transform>

输出1

Male

输出2

Female