美文网首页
第二十三章 指定元素和属性的命名空间 - 指定映射为属性的属性的

第二十三章 指定元素和属性的命名空间 - 指定映射为属性的属性的

作者: Cache技术分享 | 来源:发表于2023-12-02 11:38 被阅读0次

    第二十三章 指定元素和属性的命名空间 - 指定映射为属性的属性的名称空间

    指定映射为属性的属性的名称空间

    本节描述如何为映射为属性的属性指定名称空间。ATTRIBUTEQUALIFIED参数指定属性是否由名称空间前缀限定;取值范围如下:

    • 0(默认值),这意味着不包含名称空间前缀。
    • 1,这意味着包含了一个名称空间前缀。

    将属性投射为属性的属性也支持XMLREFREFNAMESPACE属性参数。

    对于映射为属性的属性,如果将XMLREF属性参数设置为1,则将相应的属性分配给命名空间,如下所示:

    1. 如果指定了REFNAMESPACE属性参数,则该属性在该命名空间中。

    2. 否则

      a. 如果属性是类型并指定XSDTYPE类参数,则该属性位于父类的名称空间中。

      b. 否则,如果属性类定义了命名空间类参数,则该属性位于属性类的命名空间中。

      c. 如果属性类没有定义这两个类参数中的任何一个,则该属性不在名称空间中。

    为命名空间指定自定义前缀

    当为对象生成XML输出时,系统会根据需要生成名称空间前缀。第一个名称空间前缀是s01,第二个是s02,以此类推。可以指定不同的前缀。为此,在支持xml的对象本身的类定义中设置XMLPREFIX参数。该参数有两个作用:

    Class GXML.Person Extends (%Persistent, %XML.Adaptor)
    {
    
    Parameter XMLPREFIX = "p";
    
    Parameter NAMESPACE = "http://www.person.com";
    
    Parameter XMLNAME = "Person";
    
    Property Name As %Name;
    
    }
    

    对于这个类,XML输出如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <Person xmlns="http://www.person.com" xmlns:p="http://www.person.com">
      <Name>Umansky,Jocelyn O.</Name>
    </Person>
    

    推荐

    为了简化开发、调试和故障排除,InterSystems建议采用以下做法:

    • 如果需要指定名称空间,请在所有支持xml的类中指定NAMESPACE。否则,默认规则将变得复杂。
    • 如果需要控制局部元素是否合格qualified,还可以在所有支持xml的类中指定ELEMENTQUALIFIED参数。

    相关文章

      网友评论

          本文标题:第二十三章 指定元素和属性的命名空间 - 指定映射为属性的属性的

          本文链接:https://www.haomeiwen.com/subject/nwyhgdtx.html