2

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たが、見返りはありません

テスト.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>
4

1 に答える 1

2

SVG 要素は SVG 名前空間にバインドされています。名前空間プレフィックスなしで設定されました。

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

そのため、名前空間プレフィックスを使用して XSLT でその名前空間を宣言し、その名前空間プレフィックスを使用して XPath の SVG 要素をアドレス指定する必要があります。

document('images/test.svg')/svg:svg/svg:title
于 2012-09-22T21:47:00.773 に答える