如何在 xslt 中循环包含编码 xml 的元素

how to loop through an element containing encoded xml in xslt

我在包含编码 xml 的模式中有一个节点。

在我的 xslt 中解析后,我需要遍历它并在映射方面做我必须做的事情。

正在寻找有关如何完成此操作的指示,现在我已经

 <xsl:value-of select="*xpath to the encoded xml/text()*" disable-output-escaping="yes"/> 

但我不确定是否应该将其放入变量中,如果它在变量中,我是否可以循环遍历它?

我正在考虑将编码的 xml 元素映射到它自己的模式并在那里处理它。有什么想法吗?

我最近试图在这里回答一个类似的问题:mapping a string containing xml in BizTalk

它涉及两个映射,中间格式为:

示例输入消息:

<root>
  <someNode>blabla</someNode>
  <any>&lt;root2&gt;&lt;myValue&gt;escapedXml&lt;/myValue&gt;&lt;/root2&gt;</any>
</root>

您可以将此消息映射到中间格式,将输入消息中的转义 XML 转义为它自己的架构。
例如,您可以使用 System.Web.HttpUtility.HtmlDecode() 取消转义字符串。

示例中间格式:

<root>
  <someNode>blabla</someNode>
  <any>
    <root2>
      <myValue>escapedXml</myValue>
    </root2>
  </any>
</root>

拥有支持转义的所有可能性的单独模式 XML,将使您能够轻松验证传入的消息,并为您提供更好的视觉表示。

在第二个映射中,您使用中间格式作为输入,然后您可以使用 BizTalk 映射器或像 real BizTalkers 那样映射到最终目标模式, 纯 XSLT ;-)