Xml xsd-如何处理属性

Xml xsd-如何处理属性,xml,xsd,Xml,Xsd,如何处理元素的属性? 例如,当验证具有值时,则应要求属性valid。 如果标签像第二个数据点一样是空的,那么它应该是可选的 如何在xsd中实现这一点 范例 <dataPoint type="DatapointCurrent"> <description>Measured current</description> <dataType>Float</dataType>

如何处理元素的属性? 例如,当验证具有值时,则应要求属性valid。 如果标签像第二个数据点一样是空的,那么它应该是可选的

如何在xsd中实现这一点

范例

        <dataPoint type="DatapointCurrent">
            <description>Measured current</description>
            <dataType>Float</dataType>
            <validatio valid="LOW">1</validation>
            <validationRange min="-3.0" max="5.0"/>
        </dataPoint>
        <dataPoint type="DatapointVoltage">
            <description>Measured voltage</description>
            <dataType>Float</dataType>
            <validation/>
            <validationRange/>
        </dataPoint>    

测量电流
浮动
1.
测量电压
浮动

在XSD 1.0中,无法使元素内容的规则以任何方式依赖于其属性的值

在XSD1.1中,这可以通过断言(一种非常通用的机制)或更具体的条件类型属性机制(又名类型替代)来实现

使用断言,您的规则将是

<xs:assert test="if (. != '') then exists(@valid) else true()"/>


嘿,迈克尔,谢谢你的回答!我不太确定该把它放在哪里。我在我的问题中提出了我的解决方案,我试图实现它。但是我应该把断言放在哪里呢?我试着把它放在枚举之前的限制中。但这已经不起作用了。我再试了一次,现在它起作用了。那里只有最后一只虫子。当有效值存在时,如何创建字符串长度不应为零的“选项”。那么它应该是相同的范围,但长度为5。