本机 XML 模板数据类型

原生 XML 数据类型定义为 XML_TYPE。

语法由 XML 定义。 可以定义 XML 架构识别的任何数据类型。 分析程序筛选器不依赖于 XML 数据类型,因此当前分析程序可以支持将来的 XML 数据类型,而无需进行任何更改。

* DataTypeXML_TYPE 将模板与特定 XML 架构定义语言的内置简单数据类型相关联。 实例数据值将作为 XML 元素的内容输出,其 xsi:type 派生自此模板指定的 *XMLDataType 构造。

以下指令用于定义XML_TYPE数据类型:

  • *XMLDataType (必需)。 任何内置于 XSD 架构的简单类型。 针对 XML 架构的 万维网联盟(W3C) 建议可识别以下内置简单数据类型:string、normalizedString、token、byte、unsignedByte、base64Binary、hexBinary、integer、positiveInteger、negativeInteger、nonNegativeInteger、nonPositiveInteger、int、unsignedInt、long、unsignedLong、short、unsignedShort、decimal、float、double、boolean、time、dateTime、duration、date、gMonth、gYear、gYearMonth、gDay、gMonthDay、Name、QName、NCName、anyURI、language、ID、IDREF、IDREFS、ENTITY、ENTITIES、NOTATION、NMTOKEN 和 NMTOKENS。 请注意,GDL 分析器不限于这些数据类型,并且旨在处理将来的 XML 数据类型,而无需进行任何更改。

  • *ArrayLabel (可选)。 如果指定此指令,则分析程序筛选器预期值由括号括起来,前面是指定的数组标签。

值的语法必须遵循 W3C XML 标准为该特定数据类型定义的语法。 如果 XML 语法与基本 GDL 语法规则冲突,则必须将值(或只是冲突部分)括在 Begin/EndValue:>构造中<。 具有此类不兼容语法的 XML 值,或者其语法与复合数据类型使用的语法不兼容,不能显示为复合数据类型的成员。 另请注意,GDL 分析器不会转义特殊 XML 字符,如左括号或右括号(< 或 >)或和号(&)。 值的创建者负责符合字符数据的 XML 语法。

例如,请考虑以下模板。

*Template:  XML_STRING
{
    *Type:  DATATYPE
    *DataType:   XML_TYPE
    *XMLDataType: "string"
}

如果使用上述模板,将创建以下 XML 架构条目。 此条目定义派生自最初由 *XMLDataType 指令指定的类型的新数据类型,但此新数据类型具有可在快照中显示的其他 XML 属性。 如果使用了原始数据类型,则会收到架构验证错误,因为原始预定义类型不允许显示 XML 属性。

    <complexType name = "GDLW_string">
        <simpleContent>
            <extension base="string">
                <attribute name="Name" type="string" use="optional"/>
                <attribute name="Personality" type="string" use="optional"/>
            </extension>
        </simpleContent>
    </complexType>

请考虑以下 GDL 条目。

*Text: Hello World

请考虑 PHRASE 模板,它声明 GDL 属性 *Text 以具有由XML_STRING模板定义的 *ValueType ,如下面的代码示例所示。

*Template:  PHRASE
{
    *Name:  "*Text"
    *Type:  ATTRIBUTE
    *ValueType:  XML_STRING
}

如果使用 PHRASE 模板解释早期 GDL 条目,则会发生以下 XML 输出。

<GDL_ATTRIBUTE Name="*Text"  xsi:type="GDLW_string" >Hello World</GDL_ATTRIBUTE>

XML 属性 xsi:type 用于指定此属性元素保留的数据类型,因为架构不包含此元素的声明。