0

我使用模板作为

 <xsl:template name="myTemplate"> 

我需要计算其值为“ON”和“OFF”的级别节点的数量。

我想要的最终报告:

this file contains three "ON" values and two "OFF" values.

查看我的 xml 文件的一部分。

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml:stylesheet type='text/xsl' href='view.xsl'?>
<DOC>
<show>VIEW<show/>
<Entry>
 <light>ae</light>
 <level>ON</level>
</Entry>
<Entry>
 <light>by</light>
 <level>OFF</level>
</Entry>
<Entry>
 <light>ac</light>
 <level>OFF</level>
</Entry>
<Entry>
 <light>pc</light>
 <level>ON</level>
</Entry>
<Entry>
 <light>tc</light>
 <level>ON</level>
</Entry>

感谢您的帮助

4

2 回答 2

1

这些简单的 XPath 可以解决问题:

count(/*/*/level[. = 'ON'])

count(/*/*/level[. = 'OFF'])

为了验证,当这个 XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="yes" indent="yes" method="text"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="/*">
    <xsl:text>The number of ON nodes is: </xsl:text>
    <xsl:value-of select="count(/*/*/level[. = 'ON'])"/>
    <xsl:text/>
    <xsl:text>The number of OFF nodes is: </xsl:text>
    <xsl:value-of select="count(/*/*/level[. = 'OFF'])"/>
  </xsl:template>

</xsl:stylesheet>

...针对提供的 XML 应用:

<DOC>
  <show>VIEW</show>
  <Entry>
    <light>ae</light>
    <level>ON</level>
  </Entry>
  <Entry>
    <light>by</light>
    <level>OFF</level>
  </Entry>
  <Entry>
    <light>ac</light>
    <level>OFF</level>
  </Entry>
  <Entry>
    <light>pc</light>
    <level>ON</level>
  </Entry>
  <Entry>
    <light>nc</light>
    <level>ON</level>
  </Entry>
</DOC>

...产生了想要的结果:

The number of ON nodes is: 3
The number of OFF nodes is: 2
于 2013-05-09T18:37:54.823 回答
0

问题是数数并拼出数字,即二、三。请在下面找到 XSLT 以及在给定链接中使用的格式值列表。

    <?xml version='1.0'?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:template match="DOC">
    <xsl:text>this file contains </xsl:text> 
    <xsl:number value="count(descendant::level[(.)='ON'])" format="w"/>
    <xsl:text> "ON" values and </xsl:text>
    <xsl:number value="count(descendant::level[(.)='OFF'])" format="w"/>
    <xsl:text> "OFF" values.</xsl:text>
    </xsl:template>
    </xsl:stylesheet>

格式请参考以下文档:http: //www.w3.org/TR/xslt20/#element-number

于 2013-05-10T05:05:24.440 回答