リンクされたコンポーネントからフィールドにアクセスするには、ドキュメント関数を使用してそれをロードする必要があります。リンクされたコンポーネントが別のスキーマに基づいている可能性があることに注意してください。したがって、次のような別の名前空間があります。
コンポーネント A
<Content xmlns="Some UUID">
<Name xlink:type="simple"
xlink:href="tcm:184-1897"
xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:title="B"/>
</Content>
コンポーネント B
<Content xmlns="Some Other UUID">
<Text>Some Value</Text>
</Content>
次に、コンポーネント A を変換し、リンクされたコンポーネント B に次のようにアクセスできます。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:main="Some UUID"
xmlns:link="Some Other UUID"
xmlns:xlink="http://www.w3.org/1999/xlink" >
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="LINKED_COMPONENT" select="document(//main:Name/@xlink:href)"/>
<xsl:value-of select="$LINKED_COMPONENT//link:Text"/>
</xsl:template>
</xsl:stylesheet>
コードを読みやすくするために XPath で "//" を使用しましたが、これはパフォーマンスの観点からは理想的ではありません。
なんらかの理由で、リンクされたコンポーネントがどのスキーマ (したがって名前空間) に基づいているかがわからない場合は、$LINKED_COMPONENT//*[local-name()='Text']
表記法を使用することもできますが、これもパフォーマンス ヒットになります。