XML Xpath XSL当节点名称相同时返回多个值

时间:2016-12-23 20:00:14

标签: xml xslt xpath

我有一个XML,我尝试使用XSLT提取值。它可以工作,但是XSL中select的表达式值只返回第一个值&#34; Al Pacino&#34;。如何使用它来获取所有<Cast>值?

 <Questionario>
  <Video ID="1" Titolo="Scarface">
   <Cast>Al Pacino</Cast>
   <Cast>Steven Bauer</Cast>
   <Cast>Michelle Pfieffer</Cast>
   <Genere>azione e avventura</Genere>
    <Sottogenere>crime action</Sottogenere>
    <Sottogenere>Thriller</Sottogenere>
    <Sottogenere>Gangster</Sottogenere>

XSL

<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
        <html>
        <head>
            <title>Report Questionari Slow TV</title>
        </head>
        <body>
            <h3>Video Visionati</h3>
            <div>
                <xsl:apply-templates select="//Video"> 
                </xsl:apply-templates>

            </div>


        <xsl:for-each select="Questionario/Video">

                <xsl:value-of select="@Titolo"/>

                 <xsl:value-of select="Cast"/>

1 个答案:

答案 0 :(得分:2)

您这样做是为了输出Cast

<xsl:value-of select="Cast"/>

在XSLT 1.0中,这只会选择第一个Cast元素,但您有多个元素。请尝试使用xsl:for-each代替

<xsl:for-each select="Cast">
     <xsl:value-of select="." />
     <br />
</xsl:for-each>

或者你可以使用模板。

<xsl:apply-templates select="Cast" />

然后您需要一个模板来匹配此

<xsl:template match="Cast">
     <xsl:value-of select="." />
     <br />
</xsl:template>