2013-05-09 52 views
0

算一個特定節點的一些值我使用模板作爲如何使用模板和變量名XSL

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

感謝您的幫助

回答

1

這些簡單的XPath將這樣的伎倆:

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

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

對於verific通貨膨脹,當這種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 
+0

冷靜,這是偉大的!非常感謝你 – new 2013-05-09 19:04:04

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