【问题标题】:Disable XSD validation for a single element?禁用单个元素的 XSD 验证?
【发布时间】:2016-07-12 09:48:00
【问题描述】:

我有一个 XSD 文件,其中包含一些元素

<xs:element name="BasicData">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="TTTeacherList" minOccurs="0"/>
                <xs:element ref="NonTeachingActivityList" minOccurs="0"/>
                <xs:element ref="TTStudentList" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
</xs:element> 

<xs:element name="NonTeachingActivityList">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="NonTeachingActivity" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
</xs:element>

<xs:element name="NonTeachingActivity">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="NTCode" type="String10"/>
                <xs:element name="Description" type="String100"/>
                <xs:element name="Type" type="MeetingType"/>
            </xs:sequence>
            <xs:attribute name="RefId" type="GUID" use="required"/>
        </xs:complexType>
</xs:element>

我想删除元素NonTeachingActivity 的所有验证,这样无论它是否发生,都不会检查验证。而且我不会删除整个元素,只是忽略这个元素。

【问题讨论】:

    标签: java xml xsd xsd-validation xml-validation


    【解决方案1】:

    XSD 没有直接支持您的要求,但这里有两个选项:

    1. 如果你不想NonTeachingActivity 的内容模型 已验证,您可以将其腾出,

      <xs:element name="NonTeachingActivity"/>
      

      那么它将被允许包含任何 XML。

    2. 如果您希望NonTeachingActivity 出现在内容模型中 其他元素不影响验证,您可以尝试 用

      替换对NonTeachingActivity的引用
      <xs:any processContents="skip" />
      

      并且,如果您没有创建解析歧义,这将 允许任何元素出现在它的位置。

    选项 #1,结合在任何地方使用 NonTeachingActivity 可选,可能最符合您的要求。

    【讨论】:

    • 我想忽略这个元素验证,无论是否发生在 xml 文件中。
    • @Gabu:您的评论未能解决我在此答案中为您提供的新信息;它只是重申您最初的要求。
    【解决方案2】:

    可以使用“any”标签:

    <xs:element name="NonTeachingActivityList">
            <xs:complexType>
                <xs:sequence>
                    <xs:any minOccurs="0"/>
                </xs:sequence>
            </xs:complexType>
    </xs:element>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多