您好我在下面有这个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>
答案 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() > 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>