2013-05-09 4 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

Эти простые XPaths будет делать трюк:

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^