我有一个带有节点的xml文档,该节点可以选择包含一个转义的xml字符串。我希望能够在BizTalk映射中使用xsl转换该内容。有什么建议吗?
我试过了:
我是否必须使用C#帮助程序集来完成此操作?
答案 0 :(得分:3)
我在项目中解决了类似的问题,我有一系列2个映射(都是本机xslt)。
第一张地图会将您的输入文档映射为中间格式。这种格式有一个"任何"节点(而不是转义的XML节点),最终,我放入了未转义的XML。我使用C#扩展对象进行unescape。
C#代码可以只是System.Web.HttpUtility.HtmlDecode()
在第二个映射中,您可以使用普通XPath进行映射。
示例输入消息:
<root>
<someNode>blabla</someNode>
<any><root2><myValue>escapedXml</myValue></root2></any>
</root>
中级格式:
<root>
<someNode>blabla</someNode>
<any>
<root2>
<myValue>escapedXml</myValue>
</root2>
</any>
</root>
在第二个映射中,您可以使用/root/any/root2/myValue/text()
之类的XPath而不会出现任何问题。
重要提示:
如果您需要针对此中间格式进行XSD验证,这也是一种很好的方法。您只需根据需要创建适当的中间XSD。在我的情况下,这是必需的,所以我必须使用业务流程中的接收管道执行来验证这种非转义格式。