2012-09-22 58 views
1

從外部XML訪問節點我想遍歷SVG的目錄以訪問其中的某些元數據。但是,我可以很好地進行迭代,當我嘗試在每個節點中獲取特定節點的值時,我似乎都失敗了。使用文檔()XSLT

使用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> 

回答

2

的SVG元素綁定到SVG命名空間。它的成立沒有命名空間前綴:

<svg xmlns="http://www.w3.org/2000/svg"> 

所以,你需要聲明與命名空間前綴的XSLT命名空間,並使用該命名空間前綴,以解決您的XPath的SVG元素:

document('images/test.svg')/svg:svg/svg:title 
+0

美麗''總是給我提供問題的命名空間。謝謝! – Jimmerz28