public interface TypeInfo
TypeInfo
接口表示从与文档关联的模式中指定的Element
或Attr
节点引用的类型。该类型是命名空间URI和名称属性的一对,并且取决于文档的模式。
如果文档的模式是XML DTD [XML 1.0],则计算值如下:
- 如果此类型是从
Attr
节点引用的,则typeNamespace
为"http://www.w3.org/TR/REC-xml"
,typeName
表示[属性类型]属性在[XML信息集]中的值。如果属性没有声明,则typeNamespace
和typeName
为null
。 - 如果此类型是从
Element
节点引用的,则typeNamespace
和typeName
为null
。
如果文档的模式是XML Schema [XML Schema第1部分],则使用后模式验证信息集贡献(也称为PSVI贡献)计算值如下:
- 如果[validity]属性存在且为"invalid"或"notKnown":如果可用,则为声明类型的{目标命名空间}和{name}属性,否则为
null
。注意:在撰写本文时,XML Schema规范不要求公开声明的类型。因此,如果有效性无效,则DOM实现可能选择不提供类型信息。
- 如果[validity]属性存在且为"valid":
- 如果存在[member type definition]:
- 如果{name}不缺失,则公开[member type definition]属性的{name}和{目标命名空间}属性;
- 否则,公开相应匿名类型名称的命名空间和本地名称。
- 如果存在[type definition]属性:
- 如果{name}不缺失,则公开[type definition]属性的{name}和{目标命名空间}属性;
- 否则,公开相应匿名类型名称的命名空间和本地名称。
- 如果存在[member type definition anonymous]:
- 如果为false,则公开[member type definition name]和[member type definition namespace]属性;
- 否则,公开相应匿名类型名称的命名空间和本地名称。
- 如果存在[type definition anonymous]:
- 如果为false,则公开[type definition name]和[type definition namespace]属性;
- 否则,公开相应匿名类型名称的命名空间和本地名称。
- 如果存在[member type definition]:
注意:其他模式语言不在W3C的范围之内,因此应定义如何使用TypeInfo
表示其类型系统。
- 自从:
- 1.5, DOM Level 3
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
如果文档的模式是XML Schema [XML Schema第1部分],此常量表示通过扩展派生。static final int
如果文档的模式是XML Schema [XML Schema第1部分],此常量表示列表。static final int
static final int
如果文档的模式是XML Schema [XML Schema第1部分],此常量表示如果涉及简单类型,则为联合。 -
Method Summary
Modifier and TypeMethodDescription为关联元素或属性声明的类型名称,如果未知则为null
。为关联元素或属性声明的类型的命名空间,如果元素没有声明或没有命名空间信息可用,则为null
。boolean
isDerivedFrom
(String typeNamespaceArg, String typeNameArg, int derivationMethod) 此方法返回引用类型定义之间的派生关系,即调用该方法的TypeInfo
与传递的其他类型定义之间的关系。
-
Field Details
-
DERIVATION_RESTRICTION
static final int DERIVATION_RESTRICTION如果文档的模式是XML Schema [XML Schema第1部分],此常量表示如果涉及复杂类型,则通过限制派生,或者如果涉及简单类型,则通过限制。
如果其他类型定义与引用类型定义相同,或者可以通过从引用类型定义的{基本类型定义}属性递归到其他类型定义,并且涉及的所有派生方法都是限制,则引用类型定义是通过限制派生的。- 另请参阅:
-
DERIVATION_EXTENSION
static final int DERIVATION_EXTENSION如果文档的模式是XML Schema [XML Schema第1部分],此常量表示通过扩展派生。
如果其他类型定义可以通过从引用类型定义的{基本类型定义}属性递归到其他类型定义,并且涉及的至少一个派生方法是扩展,则引用类型定义是通过扩展派生的。- 另请参阅:
-
DERIVATION_UNION
static final int DERIVATION_UNION如果文档的模式是XML Schema [XML Schema第1部分],此常量表示如果涉及简单类型,则为联合。
如果存在两个类型定义T1和T2,使得引用类型定义通过DERIVATION_RESTRICTION
或DERIVATION_EXTENSION
从T1派生,并且T2通过DERIVATION_RESTRICTION
从其他类型定义派生,T1具有{variety} union,并且{member type definitions}中的一个是T2,则引用类型定义是通过联合派生的。请注意,T1可能与引用类型定义相同,T2可能与其他类型定义相同。- 另请参阅:
-
DERIVATION_LIST
static final int DERIVATION_LIST如果文档的模式是XML Schema [XML Schema第1部分],此常量表示列表。
如果存在两个类型定义T1和T2,使得引用类型定义通过DERIVATION_RESTRICTION
或DERIVATION_EXTENSION
从T1派生,并且T2通过DERIVATION_RESTRICTION
从其他类型定义派生,T1具有{variety} list,并且T2是{item type definition}。请注意,T1可能与引用类型定义相同,T2可能与其他类型定义相同。- 另请参阅:
-
-
Method Details
-
getTypeName
String getTypeName()为关联元素或属性声明的类型名称,如果未知则为null
。 -
getTypeNamespace
String getTypeNamespace()为关联元素或属性声明的类型的命名空间,如果元素没有声明或没有命名空间信息可用,则为null
。 -
isDerivedFrom
此方法返回引用类型定义之间的派生关系,即调用该方法的TypeInfo
与传递的其他类型定义之间的关系。- 参数:
-
typeNamespaceArg
- 其他类型定义的命名空间。 -
typeNameArg
- 其他类型定义的名称。 -
derivationMethod
- 两种类型之间的派生类型和条件,如此接口提供的常量列表中所述。 - 返回:
-
如果文档的模式是DTD或文档未关联模式,则此方法将始终返回
false
。如果文档的模式是XML Schema,则如果引用类型定义根据派生参数从其他类型定义派生,则该方法将返回true
。如果参数的值为0
(没有将1
设置为derivationMethod
参数的位),则如果可以通过从引用类型定义递归任意组合的{基本类型定义}、{项目类型定义}或{成员类型定义}到达其他类型定义,则该方法将返回true
。
-