0

私のように以前に回答があった場合は事前に申し訳ありませんが、この単純な問題について確認しましたが、正確な回答が見つかりませんでした:

<self-uri xlink:href="http://www.harmreductionjournal.com/content/1/1/5">

私がやりたいのは、属性の値を選択することだけです"xlink:href"

次のセレクターを適用すると、常に空の結果が返されます。

<xsl:value-of select="@xlink:href"/>

処理中に属性値を反復しました

xlink:href: http://www.harmreductionjournal.com/content/1/1/5

私の質問は非常に単純です。名前空間を持つ属性の値を取得するにはどうすればよいですか? このように機能するはずだと私の理解でした。

SOに関する正しい質問を教えていただければ、それで十分です。

前もって感謝します。

編集:

回答に基づいて、ルート スタイルシートの宣言を確認しました。次のようになります。

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:mml="http://www.w3.org/1998/Math/MathML"
  exclude-result-prefixes="xlink mml">

除外属性が問題に関係していると思います。それを置き換えても、まだ機能せず、結果の xml がランダムな場所でいっぱいになっていることがわかります。

4

2 に答える 2

2

XSL ファイルに同じプレフィックスが同じ名前空間にマップされている限り、このアプローチは機能するはずです。つまり、XSL ファイルにはネームスペース マッピングが必要です。

xmlns:xlink="..."

where...は、ソース ドキュメントでその名前空間プレフィックスに対して定義されている値と同じです。

于 2013-07-08T10:07:53.147 に答える
1
<xsl:template match="self-uri">
  <xsl:value-of
   select="@xlink:href"
   xmlns:xlink="http://www.w3.org/1999/xlink"/>
</xsl:template>

入力ドキュメントがhttp://www.w3.org/TR/xlink11/を使用すると仮定すると、そうする必要があります。もちろん、通常は単純にコードxmlns:xlink="http://www.w3.org/1999/xlink"xsl:stylesheet要素に配置します。

于 2013-07-08T10:24:57.643 に答える