【问题标题】:Conditional Check based on another Tag基于另一个标签的条件检查
【发布时间】:2013-11-13 16:51:59
【问题描述】:

我有一个具有结构的 xml:

<?xml version="1.0" encoding="utf-8" ?>
<XYZInquiry>
    <Source>ABC</Source>
    <Info>19991234</Info> 
<RawData>
        <EmailAddress>abc@email.com</EmailAddress>
</RawData>
</XYZInquiry>

以及相应的 XSD 进行验证:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema id="XYZInquiry" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="XYZInquiry">
        <xsd:complexType>
            <xsd:all>
                <xsd:element name="Source" minOccurs="1" maxOccurs="1" type="xsd:string" />
                <xsd:element name="Info" minOccurs="1" maxOccurs="1" type="xsd:string" />
<xsd:element name="RawData" minOccurs="0" maxOccurs="1">
<xsd:complexType>
                        <xsd:sequence>
                        <xsd:element name="EmailAddress" minOccurs="0" maxOccurs="1"/>
</xsd:element>
                    </xsd:sequence>
                </xsd:complexType>

我需要读取 Info Tag 并根据前 4 位数字,我需要在 RawData Tag 上设置条件。即如果 Info 值以 1234 开头,则允许 RawData 标签,否则无效。 请多多指教。

【问题讨论】:

    标签: xml xsd xsd-validation


    【解决方案1】:

    您要的是co-occurrence constraints。这在 XSD 1.1(未广泛实施)和Scehmatron 中是可能的。 在 XSD 1.0 中是不可能的

    【讨论】:

    • 感谢您提供详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 2023-01-18
    • 2015-05-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多