如何提供具有最小值和最大值的单位值

时间:2012-09-24 06:52:41

标签: xsd

我有一个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>

2 个答案:

答案 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规范假设如果您尝试将最小值设置为不属于您的类型的值空间的值,则某处会出现错误。

所以:要么使用有符号整数类型作为基类型,要么将最小值设置为实际存在于基类型中的值。