【问题标题】:xsd validation for tag value not null标签值的 xsd 验证不为空
【发布时间】:2014-07-03 07:07:47
【问题描述】:

我的 Xml 是:

    <LineService>
        <LineSrId>SR_CP_JD_144084-1</LineSrId>
        <MSNumber/>
        <AccountNo>1320116817829261</AccountNo>
    </LineService>

我的 xsd 是:

<element name="LineService" maxOccurs="unbounded" minOccurs="1">
    <complexType>
        <sequence>
            <element type="string" name="LineSrId" maxOccurs="1" minOccurs="0" nillable="true"/>
            <element name="MSISDN" maxOccurs="1" minOccurs="0" nillable="true">
                <simpleType>
                    <restriction base="string">
                        <pattern value="\d{10,18}|"></pattern>
                    </restriction>
                </simpleType>
            </element>
            <element type="string" name="AccountNo" maxOccurs="1" minOccurs="0" nillable="true"/>
        </sequence>
    </complexType>
</element>

我想检查 MS Number 或 Account No 可以为空,但对于请求,两者都不应该为空。其中至少有一个不应为 null 且具有值。

【问题讨论】:

    标签: xml tags xsd xsd-validation


    【解决方案1】:

    您正在寻找 xsd 定义以使 &lt;AccountNo&gt;&lt;MSNumber&gt; 或两者都有效,但无效。通常的做法是结合&lt;xs:choice&gt;&lt;xs:sequence&gt;和minOccurs 属性。请注意,在您的 xsd 中,您的元素名称是 MSISDN,在您的 XML 中是 MSNumber,我在您的 XML 中使用 MSNumber,这是我的解决方案:

    <schema xmlns="http://www.w3.org/2001/XMLSchema">
    ...
    <element name="AccountNo" type="string"/>
    <element name="MSNumber">
        <simpleType>
            <restriction base="string">
                <pattern value="\d{10,18}|"></pattern>
            </restriction>
        </simpleType>
    </element>
    <element name="LineService" maxOccurs="unbounded" minOccurs="1">
        <complexType>
            <sequence>
                <element type="string" name="LineSrId" maxOccurs="1" minOccurs="0" nillable="true"/>
                <xs:choice>
                    <xs:sequence>
                        <xs:element ref="MSNumber"/>
                        <xs:element ref="AccountNo" minOccurs="0"/>
                    </xs:sequence>
                    <xs:element ref="AccountNo"/>
                </xs:choice>            
            </sequence>
        </complexType>
    </element>
    ...
    </schema>
    

    希望对您有所帮助,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多