为了访问链接组件中的字段,您需要使用文档函数加载它,请记住链接组件可能基于不同的模式,因此具有不同的名称空间,如下所示:
组分 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']
符号,但这又会带来性能损失。