XML XSLT idref标记

时间:2015-04-30 01:01:24

标签: xml xslt

您好我在下面有这个XML文件

XML

output_str = ' '.join(str(e) for e in list)

我知道在我的XML文件中获取邮政编码的数据我只是在下面这样做,它将打印出该xml文件中的所有邮政编码。我怎么能做同样的事情来获得大都市,因为它有idref标签,我试着像我用邮政编码那样做,但它不起作用。我不知道该怎么做。任何帮助表示赞赏。

XSL

<geo>
   <state id="georgia">
     <capital idref="atlanta"/>
     <citiesin idref="atlanta"/>
     <citiesin idref="columbus"/>
     <code>30294</code>
   </state>

   <state id="florida">
     <capital idref="miami"/>
     <citiesin idref="atlanta"/>
     <citiesin idref="orlando"/>
     <code>12345</code>
   </state>

2 个答案:

答案 0 :(得分:1)

“。”在上面的模板中选择文本。您只想获取属性值。这是其中一个模板:

<xsl:template match="capital">
  Capital: <span style="color:#ff0000">
 <xsl:value-of select="@idref"/></span>
 <br />
</xsl:template>

答案 1 :(得分:0)

尝试这样的事情:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

    <xsl:strip-space elements="*"/>
    <xsl:output indent="yes"/>

    <xsl:template match="state">
        <p>
            <xsl:apply-templates select="code"/>
            <xsl:apply-templates select="capital"/>
            <xsl:text>Cities: </xsl:text>
            <xsl:for-each select="citiesin/@idref">
                <xsl:if test="position() &gt; 1">
                    <xsl:text>, </xsl:text>
                </xsl:if>
                <span><xsl:value-of select="."/></span>
            </xsl:for-each>
        </p>
    </xsl:template>

    <xsl:template match="code">
        <xsl:text>Zip Code: </xsl:text>
        <span style="color:#ff0000">
            <xsl:value-of select="."/>
        </span>
        <br />
    </xsl:template>

    <xsl:template match="capital">
        <span><xsl:value-of select="concat('Capital: ', @idref)"/></span><br/>
    </xsl:template>

</xsl:stylesheet>