我有一个DTD
<parameter name="ReferenceSignalPower" access="readWrite">
<syntax>
<int>
<range minInclusive="-60" maxInclusive="50" />
<units value="dBm">
</units>
</int>
</syntax>
</parameter>
我是XML架构的新手,我不知道如何使用此XML架构提供单元值
<xs:element name="ReferenceSignalPower">
<xs:simpleType>
<xs:restriction base="xs:unsignedInt">
<xs:minInclusive value="-60"/>
<xs:maxInclusive value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
答案 0 :(得分:2)
XML模式没有测量单元的概念,您可以定义XML属性或XML元素以包含具有某些限制的数字(或其他标准数据类型,如日期等),但它是应用程序的责任读取XML以将这些数字解释为特定计量单位的值。
如果要在架构中添加度量单位信息,可以使用appInfo
元素来执行此操作 - 例如:
<xs:element name="ReferenceSignalPower">
<xs:simpleType>
<xs:annotation>
<xs:appinfo>
<units value="dBm"/>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:int">
<xs:minInclusive value="-60"/>
<xs:maxInclusive value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
但是你必须自己解析和解释这些信息。
答案 1 :(得分:1)
你没有说出你的问题是什么,但我想问题是“为什么这不起作用?”
你的声明几乎是正确的,但并不完全。当你想要最小值-60时,为什么使用unsignedInt作为基类型? unsignedInt的最小值已设置为零。
XSD规范假设如果您尝试将最小值设置为不属于您的类型的值空间的值,则某处会出现错误。
所以:要么使用有符号整数类型作为基类型,要么将最小值设置为实际存在于基类型中的值。