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

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

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

本节描述如何为映射为属性的属性指定名称空间。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参数。

猜你喜欢

转载自blog.csdn.net/yaoxin521123/article/details/134762726