如何使用混合值(整数和字符串)限制更改XML / XSD中的complexType?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用混合值(整数和字符串)限制更改XML / XSD中的complexType?相关的知识,希望对你有一定的参考价值。

嗨,我已经完成了用XML进行电子学习会话的任务。我需要限制每个字符串值和xml内部的每个整数值(元素和属性)。我没有遇到处理这些情况的问题,因为那些值是相同的类型,我正在努力解决当它是一个整数和另一个字符串时它应该如何工作。 xml文件看起来像这样。

  <car id="5">
        <brand origin="Italy">Lamorghini</brand>
        <model body="sedan">Huracan</model>
        <year>2017</year>
        <cc engineType="gasoline">5204</cc>
        <registered>Switzerland</registered>
    </car>

现在我专注于我主要关注的元素“cc”。据我所知,因为它有一个属性它只能是complexType,但由于元素的值是整数(这是一个simpleType),验证器会给出错误。

 <xsd:complexType name="TypeCC">
        <xsd:restriction base="xsd:integer">
            <xsd:minInclusive value="330"/>
            <xsd:maxInlcusive value="8277"/>
        </xsd:restriction>
 </xsd:complexType>

我尝试了多种方法,但没有一种方法可行,我认为我缺少一些理解。 Validator将基类型指定为预期的关注点。

我还想知道上面的xml中的每个属性是否应该放在<xsd:sequence/>之外,但是在元素car的complexType中?如下图所示?

<xsd:complexType name="TypeCar">
    <xsd:sequence>
        <xsd:element name="brand" type="TypeBrand"/>
        .
        .
        .
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:integer" use="required"/>
        .
        .
    <xsd:attribute name="engineType" type="TypeEngine"/>
</xsd:complexType

对我缺乏发布技巧感到宽容,这是我第一次来这里。总结一下,我想知道如何解决混合类型的问题和属性的正确位置。非常感谢任何答案。

答案

关于TypeCC我唯一知道这样做是使用额外的复杂类型作为TypeCC的基础。例如:

<xsd:element name="cc" type="tns:TypeCC"></xsd:element>

<xsd:complexType name="BaseTypeCC" mixed="true">
    <xsd:simpleContent>
        <xsd:extension base="xsd:integer">
            <xsd:attribute name='engineType' type="xsd:string"></xsd:attribute>
        </xsd:extension>        
    </xsd:simpleContent>
</xsd:complexType>

<xsd:complexType name="TypeCC" mixed="false">
    <xsd:simpleContent>
        <xsd:restriction base="tns:BaseTypeCC">
            <xsd:minInclusive value="330"/>
            <xsd:maxInclusive value="8277"/>
        </xsd:restriction>      
    </xsd:simpleContent>
</xsd:complexType>

关于这个问题

我还想知道上面的xml中的每个属性是否应该放在<xsd:sequence />之外,但是在元素car的complexType中?

不仅car元素的属性去那里。其他人参与其自身元素的内容模型定义。

以上是关于如何使用混合值(整数和字符串)限制更改XML / XSD中的complexType?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式更改 Android 中的字符串资源 xml 值?

在包含整数和字符串的混合数据框中查找最小/最大值

WPF CoerceCallback 取消值更改

如何将注解与 faces-config.xml 混合

将具有混合复杂类型元素的 XML 转换为 DataSet,以及其他 DataSet 限制

如何将 iOS 滑块值限制为整数?