XSL にはかなり新しいので、初心者であることをお許しください。
入力 XML ドキュメントがあります (これは実際にはJargon Fileの docbook 形式で、大幅に省略されています):
<?xml version="1.0" encoding="ISO-8859-1"?>
<glossary>
<glossdiv id='glossdiv-0'>
<title>0</title>
<glossentry id='dev-null'>
<glossterm>/dev/null</glossterm>
<glossdef>
snip...
<glossterm>bit bucket</glossterm>
</glossdef>
</glossentry>
<glossentry id='me'>
<glossterm>/me</glossterm>
<glossdef>
snip...
<glossterm>/dev/null</glossterm>
</glossdef>
</glossentry>
</glossdiv>
</glossary>
これは、私が取り組んできたテスト用 XSL です。
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xalan"
version="2.0">
<xsl:output indent="yes" xalan:indent-amount="5" />
<xsl:template match="text()" />
<xsl:key name="glossterm-lookup-key" match="glossentry/@id" use="glossentry/glossterm" />
<xsl:template match="glossary" >
<xsl:apply-templates />
</xsl:template>
<xsl:template match="glossterm">
Key: <xsl:value-of select="." />
Value: <xsl:value-of select="key('glossterm-lookup-key', .)" />
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
私の目的は、要素に出くわすたびに、指定された<glossterm>
を検索したいということです。たとえば、 を見つけたら、を取得したいと思います。glossentry/@id
glossterm/text()
<glossterm>/dev/null</glossterm>
dev-null
私はglossdefのglosstermsにのみ本当に興味がありますが、私はすべてのもののために作業中のxsl:templatesを持っています - テストのために、私はちょうどすべてのglosstermsに取り組んできました.
別のルックアップ ドキュメントを作成し、 XML.com: Reading Multiple Input Documentsで説明されているアプローチを使用しようとしましたが、うまくいきませんでした。
ヒントはありますか?