我们可以在XML架构元素名称中使用特殊字符吗?

时间:2014-10-14 08:31:06

标签: xml xsd schema character

是否可以在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>

2 个答案:

答案 0 :(得分:2)

简答: 否。不允许使用斜杠。

答案很长:

Section 3.3.1 of the XSD specification定义name属性为

  

[XML-Namespaces]定义的NCName。

这引用了Namespaces in XML的规范,该规范定义了2. Declaring Namespaces部分下的NCName

name属性A/BA)的第一个字符位于Letter类,所以没关系。但是,第二个字符(/)不在NCNameChar类中。点击构成NCNameChar课程的课程的链接,您将找不到其中任何一个slash's code point U+002F

重复此过程以有条不紊地找出架构中任何位置允许或不允许的值。

答案 1 :(得分:0)

您可以使用Oxygen XML Editor等工具检查是否可能,它会告诉您XML文件中的所有错误。