是否可以在XML架构中执行此操作?
<xs:element name="A/B" type="xs:string"/>
看起来我们无法使用特殊字符&#34; /&#34;在架构元素名称中。特殊字符&#34; /&#34;抛出一个错误。 还有其他方法可以达到这个目的吗?
下面的示例代码可用于重现错误。当保存为Test.xsd然后在Jdeveloper中打开时,这将产生错误消息&#34;属性名称的值不是NCName类型&#34;。
<?xml version="1.0" encoding="windows-1252" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.org"
targetNamespace="http://www.example.org"
elementFormDefault="qualified">
<xs:element name="exampleElement">
<xs:complexType>
<xs:sequence>
<xs:element name="A/B" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:2)
简答: 否。不允许使用斜杠。
答案很长:
Section 3.3.1 of the XSD specification定义name
属性为
由[XML-Namespaces]定义的NCName。
这引用了Namespaces in XML的规范,该规范定义了2. Declaring Namespaces部分下的NCName
。
name
属性A/B
(A
)的第一个字符位于Letter
类,所以没关系。但是,第二个字符(/
)不在NCNameChar
类中。点击构成NCNameChar
课程的课程的链接,您将找不到其中任何一个slash's code point U+002F
。
重复此过程以有条不紊地找出架构中任何位置允许或不允许的值。
答案 1 :(得分:0)
您可以使用Oxygen XML Editor等工具检查是否可能,它会告诉您XML文件中的所有错误。