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



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

输入 XML:

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

如果 newwo 是 1,那么我必须在我的输出中设置为"NEW",否则设置为"OLD"

预期输出为:

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>

请帮助我。提前感谢!

我看到你没有得到输出的原因有很多。

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

下面是一个更新的示例。

XML 输入

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

XSLT 1.0

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

输出

{
newwo: "NEW"
}

你试试下面

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"      xmlns:xs="http://www.w3.org/2001/XMLSchema"  version="1.0">
 <xsl:template match="/">
  <xsl:choose>
    <xsl:when test="/workorder/newwo = 1">
     <xsl:text disable-output-escaping="no"> newwo:New</xsl:text>
</xsl:when>
    <xsl:otherwise>
 <xsl:text disable-output-escaping="no"> newwo:Old</xsl:text>                    </xsl:otherwise>
  </xsl:choose>
  </xsl:template>
  </xsl:stylesheet>

相关内容

  • 没有找到相关文章

最新更新