как получить значения тегов из XML с помощью xslt - PullRequest
0 голосов
/ 15 февраля 2011
<block3>
    <tag>
        <name>113</name>
        <value>Nfeb</value>
    </tag>
    <tag>
        <name>108</name>
        <value>20234254321</value>
    </tag>
</block3>

Здесь выше в xml у нас есть два тега в block3.Я не хочу тег 108, поэтому мне нужно подготовить xslt, для этого мне нужно позвонить только 113. Как я могу это сделать?Может кто-нибудь, пожалуйста, помогите мне!

Ответы [ 2 ]

1 голос
/ 15 февраля 2011
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>

    <xsl:template match="/*">
        <xsl:apply-templates select="tag[not(name = '108')]"/>
    </xsl:template>

    <xsl:template match="tag">
        <xsl:value-of select="
            concat(name, '+', value)
        "/>
    </xsl:template>
</xsl:stylesheet>

Результат по вашему образцу будет 113+Nfeb.

А лично ненавижу for-each, но для ясности.

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:template match="/">
        <xsl:for-each select="block3/tag[not(name = '108')]">
            <xsl:value-of select="concat(name, '+', value)"/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
0 голосов
/ 15 февраля 2011

Я бы создал два шаблона. Один, соответствующий всем элементам <tag>, который делает то, что вы хотите, это попадет в случай 113. А затем другой, переопределяющий его, в соответствии с конкретными случаями, которые вы хотите пропустить.

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="tag">.....do stuff....</xsl:template>
  <xsl:template match="tag[name = '108']" />

</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...