我正在尝试遍历SVG目录以访问其中的一些元数据。我可以很好地迭代,但是,当我试图获取每个节点中的特定节点的值时,我似乎失败了。
使用SaxonHE 9.4(Java)进行转换。
这里的例子似乎很简单:
<xsl:value-of select="document('geneva.xml')/ph:photo/ph:title"/>
http://www.ibm.com/developerworks/xml/library/x-tipcombxslt/
然而,我有我的XSLT(相关部分;没有迭代atm只是一个获得外部节点值的测试):
<div>
<p><xsl:value-of select="document('images/test.svg')"/></p>
</div>
但这一切都给了我:
<div><p>Mine
circle:hover {fill-opacity:0.9;}
</p></div>
我已经尝试了document('images/test.svg')/svg/title
,但这并没有给我任何回报
test.svg
<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<title>Mine</title>
<style type="text/css">
circle:hover {fill-opacity:0.9;}
</style>
<g style="fill-opacity:0.7;">
<circle cx="6.5cm" cy="2cm" r="100" style="fill:red; stroke:black; stroke-width:0.1cm" transform="translate(0,50)" />
<circle cx="6.5cm" cy="2cm" r="100" style="fill:blue; stroke:black; stroke-width:0.1cm" transform="translate(70,150)" />
<circle cx="6.5cm" cy="2cm" r="100" style="fill:green; stroke:black; stroke-width:0.1cm" transform="translate(-70,150)"/>
</g>
</svg>
答案 0 :(得分:2)
SVG元素绑定到SVG名称空间。它的设置没有名称空间前缀:
<svg xmlns="http://www.w3.org/2000/svg">
因此,您需要在XSLT中使用namespace-prefix声明该命名空间,并使用该namespace-prefix来解决XPath中的SVG元素:
document('images/test.svg')/svg:svg/svg:title