【问题标题】:Can we use special character in XML schema element name?我们可以在 XML 模式元素名称中使用特殊字符吗?
【发布时间】:2014-12-08 23:15:23
【问题描述】:

是否可以在 XML 模式中执行此操作?

<xs:element name="A/B" type="xs:string"/> 

看起来我们无法在架构元素名称中使用特殊字符“/”。特殊字符“/”引发错误。 我们还有其他方法可以实现吗?

下面的示例代码可用于重现错误。当保存为 Test.xsd 然后在 Jdeveloper 中打开时,这将产生错误消息“属性名称的值不是 NCName 类型”。

<?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>

【问题讨论】:

    标签: xml xsd schema character


    【解决方案1】:

    您可以使用 Oxygen XML Editor 或其他类似工具检查是否可行,它会告诉您 XML 文件中的所有错误。

    【讨论】:

    • 当我在 Jdeveloper 中看到它时出现错误。您将看到错误消息“属性名称的值不是 NCName 类型”。
    【解决方案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

    重复该过程,有条不紊地找出架构中允许或不允许的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 2021-10-20
      • 2016-08-09
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多