下面是一些 XSD 代码,它在 XML Spy 中有效,但在 Biztalk 中使用句点或连字符在引用元素上阻塞。谁能告诉我我是否做错了什么,或者确认这是一个错误还是一个“功能”?有没有人有解决方法?我在 .NET(和 BizTalk)中搜索并搜索了 XSD/XML 验证中的异常现象,但没有看到任何东西(任何有类似问题的人)。
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2012 rel. 2 (x64) (http://www.altova.com) by ZiggyDude (PA DPW-BIS) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="DotNetRestrictions">
<xs:complexType>
<xs:choice>
<xs:element name="Valid">
<xs:complexType>
<xs:sequence>
<xs:element name="Embedded-Hyphen"/>
<xs:element name="Embedded.Period"/>
<xs:element name="Embedded_Underscore"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Invalid">
<xs:complexType>
<xs:sequence>
<xs:element ref="Embedded-Hyphen"/>
<xs:element ref="Embedded.Period"/>
<xs:element ref="Embedded_Underscore"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="Embedded.Period"/>
<xs:element name="Embedded-Hyphen"/>
<xs:element name="Embedded_Underscore"/>
</xs:schema>
注意嵌入的下划线在 .NET 中不会失败。通过将所有句点和连字符更改为下划线来实现这一点,但发送机构不会以“下划线”格式提供 XML 或 XSD。这些文件出现在太多带有句点和连字符的地方。我们要么需要 1) 正确配置它,使其在可能的情况下工作,2) 修复 BizTalk 和 .NET (heh.heh.heh),或者 3) 动态转换这些 XML 文档以在处理之前替换句点和连字符。
想法?并请确认/反驳我的理论,即当元素被称为引用时,BizTalk/.NET 会阻塞这些字符。
蒂亚!
最佳答案
如果 BizTalk“窒息”的症状是您在以下方面遇到错误:
然后,您可以通过在 BizTalk 架构编辑器中选择有问题的节点并修改其 Rootnode TypeName 属性来修复该问题。将句点或连字符换成下划线 - 这只会影响生成的 .NET 类型,而不是 XML 表示 - 看看是否能解决您的问题。
关于.net - Biztalk 错误?当全局(引用)在元素名称中使用连字符或句点时,XSD 会阻塞,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11474182/