如何在XML中定义一系列位

时间:2013-01-04 09:15:17

标签: xml xsd

我想在XML中使用一个引用4位字节的数据类型,而其他4位则用于不同的目的。像前4位0..3用于表示错误代码,第4,5,6和7位用于表示其他任务。 如何在XML中实现这一点。

<DataItem DataType="Unsigned8" Length="1" TextId="T_ErrorCode" UseAsBits="true">
  <BitDataItem BitOffset="0" TextId="T_4bit_errorcode" />    ---> Line 125

我可以使用:
    &lt; ... BitOffset =“0..3”TextId =“T_4bit_errorcode”/&gt;

这显示以下错误:

编辑:

使用MSXML 4.0:

行消息 125将“0..3”解析为unsignedByte数据类型时出错。 属性:'BitOffset'根据其数据类型具有无效值。

使用Xerces:

行消息 125值'0..3'与正则表达式facet'[+ - ]不匹配?[0-9] +' 遇到129个小数点以上

我正在验证架构,但我不确定如何找到它。我是XML的新手。 我只是想知道如何表示比特范围。是否有任何数据类型的位范围或我必须创建一个新的用户定义类型。

XML的初始行包含:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"

编辑2:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="GSDML-Stylesheet-HTML-V2.2.xsl" type="text/xsl"?>
<ISO15745Profile xmlns="http://www.profibus.com/GSDML/2003/11/DeviceProfile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.profibus.com/GSDML/2003/11/DeviceProfile  ..\XSD\GSDML-DeviceProfile-v2.2.xsd">

<ProfileHeader>

我希望我添加新数据类型的模式文件是用schemalocation引用的。

请告诉我如何将字符串表示为位。

1 个答案:

答案 0 :(得分:0)

如果你总是要引用4位(并且不能少),为什么不使用整数值来表示范围的第一位?:

0 -> 0..3
1 -> 1..4
2 -> 2..5
3 -> 3..6
4 -> 4..7

您当然不能在数据类型为unsignedByte的属性中使用值“0..3”,因为它根本不是数值。