我有一个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"/>
答案 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>