我正在使用一组相互关联的文档,我正在使用单个XSL和处理(根据内容和到目前为止完成的处理确定使用的URL)。
例如,使用以下命令从我的XSL获取文档:
<xsl:for-each select=
"(document('<someURL>')//atom:entry/atom:content/m:properties/d:PresentationContent)
[position()=1]">
<xsl:call-template name="formHandler"/>
</xsl:for-each>
大多数文档都可以。
除了在一种情况下,元素d:PresentationContent
的内容然后直接包含转义的XML作为文本(即,不使用cdata),例如
<Component><Id>tcm:10-7788</Id></Component>
在XSL中是否有任何方法可以获取文档,将编码的字符串转换为XML并处理节点,就好像它们是文档的一部分一样,以便可以将示例视为:
//atom:entry/atom:content/m:properties/d:PresentationContent/atom:Component/atom:Id
我已经在解决方案方面做了很长的一段时间,这对我来说在这个阶段进行更改非常昂贵 - 所以任何帮助都非常感激。 (备份计划是构建一个我发出请求的http代理,让代理清理响应。)
答案 0 :(得分:0)
使用 XSLT 3.0 ,您可以使用parse-xml()
功能:
<xsl:template name="formHandler">
<xsl:apply-templates select="parse-xml(text())/Component/Id" />
</xsl:template>
由于转义的XML没有任何delclared命名空间或namespace-prefix,因此应该在没有命名空间的情况下解决这些元素。