第二十三章 指定元素和属性的命名空间 - 指定映射为属性的属性的名称空间
指定映射为属性的属性的名称空间
本节描述如何为映射为属性的属性指定名称空间。ATTRIBUTEQUALIFIED
参数指定属性是否由名称空间前缀限定;取值范围如下:
-
0
(默认值),这意味着不包含名称空间前缀。 -
1
,这意味着包含了一个名称空间前缀。
将属性投射为属性的属性也支持XMLREF
和REFNAMESPACE
属性参数。
对于映射为属性的属性,如果将XMLREF
属性参数设置为1
,则将相应的属性分配给命名空间,如下所示:
-
如果指定了
REFNAMESPACE
属性参数,则该属性在该命名空间中。 -
否则
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
参数。
网友评论