XSLT 1.0 - 如何检查字符串的条件

时间:2016-03-09 01:06:35

标签: xslt xslt-1.0

我正在尝试对输入的xml文件进行条件检查并放置值。

输入xml:

<workorder>
    <newwo>1</newwo>
</workorder>

如果newwo为1,那么我必须在输出中设置为&#34; NEW&#34;别的&#34; OLD&#34;

预期输出为:

newwo: "NEW"

我的xslt是:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:xs="http://www.w3.org/2001/XMLSchema"  version="2.0">

<xsl:template match="/">

        <xsl:apply-templates select="NEWWO" />

</xsl:template>
<xsl:template match="/NEWWO">
    <xsl:text>{
      newwo:"
    </xsl:text>
        <xsl:choose>
            <xsl:when test="NEWWO != '0'">NEW</xsl:when>
            <xsl:otherwise>OLD</xsl:otherwise>
        </xsl:choose>
    <xsl:text>"
    }</xsl:text>
</xsl:template>

请帮帮我。提前谢谢!

2 个答案:

答案 0 :(得分:2)

我发现有很多原因你没有得到输出。

  1. xpath是区分大小写的。 NEWWO不会与newwo匹配。
  2. 您匹配/,然后将模板应用于newwo(已修复案例),但newwo在该上下文中不存在。您必须将*/workorder/添加到a​​pply-templates(例如select="*/newwo")或将/更改为/*或{{1在比赛中。
  3. 您匹配/workorder(案例再次修复),但/newwo不是根元素。删除newwo
  4. 您执行以下测试:/,但test="newwo != '0'"已经是当前上下文。请改用newwo.。 (如果您使用normalize-space(),请务必针对字符串进行测试。(引用normalize-space()。))
  5. 这是一个更新的例子。

    XML输入

    1

    XSLT 1.0

    <workorder>
        <newwo>1</newwo>
    </workorder>
    

    <强>输出

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:output method="text"/>
    
      <xsl:template match="/*">
        <xsl:apply-templates select="newwo" />
      </xsl:template>
    
      <xsl:template match="newwo">
        <xsl:text>{&#xA;newwo: "</xsl:text>
        <xsl:choose>
          <xsl:when test=".=1">NEW</xsl:when>
          <xsl:otherwise>OLD</xsl:otherwise>
        </xsl:choose>
        <xsl:text>"&#xA;}</xsl:text>
      </xsl:template>
    
    </xsl:stylesheet>
    

答案 1 :(得分:0)

你试试如下

div