我有一个xml.in这个xml我有一个名为video的节点,如下面的
<product>
<id>676872</id>
<weightingram>510</weightingram>
<volume>0</volume>
<discountgroup />
<name>Product name (500 g)</name>
<vat>10,49</vat>
<webbestprice extra="webbestprice">0</webbestprice>
<webreturn extra="webreturn">0</webreturn>
<weboutdate extra="weboutdate">01-01-2013 00:00:00</weboutdate>
<webaltitem extra="webaltitem" />
<filters extra="filters">
<ISP_WebItem FILTER="Type" FILTERNAME="type" UNITCODE=""/>
<ISP_WebItem FILTER="Type2" FILTERNAME="500" UNITCODE="g"/>
</filters>
<videos extra="videos">
<YoutubeVideoURL RowNumber="33" ProductID="676872" YoutubeUrl="http://www.youtube.com/watch?v=EjoEIHVk9qM" YoutubeImage="https://img.youtube.com/vi/EjoEIHVk9qM/2.jpg"/>
</videos>
</product>
上面的xml正在使用
<textarea>
<xsl:copy-of select="."/>
</textarea>
我需要从这个xml中获取属性YoutubeUrl的值。我试过像
这样的东西 <xsl:value-of select="./videos/YoutubeVideoURL[@YoutubeUrl] "/>
但它没有用。谢谢你提前帮忙。
答案 0 :(得分:1)
试试此代码
<xsl:template match="YoutubeVideoURL">
<xsl:value-of select="@YoutubeUrl"/>
</xsl:template>
(或)
如果您指定了与“/”root匹配的模板,请使用以下语法。
<xsl:template match="/">
.....
<textarea>
<xsl:copy-of select="." />
</textarea>
<p>
<xsl:value-of select="//videos//YoutubeVideoURL//@YoutubeUrl"/>
</p>
</xsl:template>
Copy-of将复制select表达式中指定的xml元素。因此TextArea将具有该结构的xml元素。并且您正在使用value-of来检索需要元素选择的xml属性。所以,它没有相关性。
您可以使用本文中提到的任一解决方案。
答案 1 :(得分:1)
你可以这样写
您的示例XML文件
<?xml version="1.0" encoding="UTF-8"?>
<videos extra="videos">
<YoutubeVideoURL RowNumber="1" ProductID="12452" YoutubeUrl="http://www.youtube.com/watch?v=efhrtgdbo" YoutubeImage="https://img.youtube.com/vi/efhrtgdbo/2.jpg"/>
</videos>
您的示例XSL文件
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="YoutubeVideoURL">
<xsl:value-of select="@YoutubeUrl"/>
</xsl:template>
</xsl:stylesheet>
最终输出
就是这样
答案 2 :(得分:0)
在您的价值中,您正在寻找属性为videos/YoutubeVideoURL
的任何@YoutubeUrl
。如果您希望获得@YoutubeUrl
的值,那么您需要将其从谓词中删除。
<xsl:value-of select="./videos/YoutubeVideoURL/@YoutubeUrl" />
这当然假设您的路径和模板已经正确设置,以便将此值定位在其当前位置。