org.w3c.dom

接口
异常
public interface TypeInfo

TypeInfo 接口表示从 ElementAttr 节点引用的类型,用与文档相关的模式指定。该类型是一对名称空间 URI 和名称属性,且取决于文档的模式。

如果文档的模式为 XML DTD [XML 1.0],则按以下方式计算值:

  • 如果此类型是从 Attr 节点引用的,则 typeNamespace"http://www.w3.org/TR/REC-xml"typeName 表示 [XML Information Set] 中的 [attribute type] 属性。如果没有属性声明,则 typeNamespacetypeNamenull
  • 如果此类型是从 Element 节点引用的,则 typeNamespacetypeNamenull

如果文档的模式为 XML Schema [XML Schema Part 1],则使用后模式验证信息集贡献(也称为 PSVI 贡献)按以下方式计算值:

  • 如果 [validity] 属性存在且是“无效的”“未知的”,则:为声明类型的 {target namespace} 和 {name} 属性(如果可用);否则为 null

    注:在写入时,XML Schema 规范不要求公开声明的类型。因此,如果有效性是无效的,则 DOM 实现可能选择不提供类型信息。

  • 如果 [validity] 属性存在且是“无效的”,则:
    1. 如果 [member type definition] 存在,则:
      1. 如果 {name} 不存在,则公开 [member type definition] 属性的 {name} 和 {target namespace} 属性;
      2. 否则,公开相应匿名类型名称的名称空间和本地名称。
    2. 如果 [type definition] 属性存在:
      1. 如果 {name} 不存在,则公开 [type definition] 属性的 {name} 和 {target namespace} 属性;
      2. 否则,公开相应匿名类型名称的名称空间和本地名称。
    3. 如果 [member type definition anonymous] 存在:
      1. 如果它为 false,则公开 [member type definition name][member type definition namespace] 属性;
      2. 否则,公开相应匿名类型名称的名称空间和本地名称。
    4. 如果 [type definition anonymous] 存在:
      1. 如果它为 false,则公开 [type definition name][type definition namespace] 属性;
      2. 否则,公开相应匿名类型名称的名称空间和本地名称。

注:其他模式语言不在 W3C 的范围内,因此应该使用 TypeInfo 定义如何表示它们的类型系统。

另请参见 Document Object Model (DOM) Level 3 Core Specification

从以下版本开始:
DOM Level 3

字段摘要
static int DERIVATION_EXTENSION
          如果文档的模式为 XML Schema [XML Schema Part 1],则此常量表示由 extension 派生出的。
static int DERIVATION_LIST
          如果文档的模式为 XML Schema [XML Schema Part 1],则此常量表示 列表
static int DERIVATION_RESTRICTION
          如果文档的模式为 XML Schema [XML Schema Part 1],则此常量表示通过 restriction 进行的派生(如果涉及复杂的类型)或 restriction(如果涉及简单的类型)。
static int DERIVATION_UNION
          如果文档的模式为 XML Schema [XML Schema Part 1],则此常量表示 union(如果涉及简单类型)。
 
方法摘要
 String getTypeName()
          为相关元素或属性声明的类型的名称;如果未知,则为 null
 String getTypeNamespace()
          为相关元素或属性声明的类型的名称空间;如果该元素没有声明或如果没有名称空间信息可用,则为 null
 boolean isDerivedFrom(String typeNamespaceArg, String typeNameArg, int derivationMethod)
          此方法返回引用类型定义(即在其上调用该方法的 TypeInfo)和其他类型定义(即作为参数传递的类型定义)之间是否存在派生。
 

字段详细信息

DERIVATION_RESTRICTION

static final int DERIVATION_RESTRICTION
如果文档的模式为 XML Schema [ XML Schema Part 1],则此常量表示通过 restriction 进行的派生(如果涉及复杂的类型)或 restriction(如果涉及简单的类型)。
如果其他类型定义与引用类型定义相同,或者如果遵循引用类型定义中的 {base type definition} 属性可以递归式到达其他类型定义,并且涉及的所有 derivation methods 都是限制,则引用类型定义由限制从其他类型定义中派生。

另请参见:
常量字段值

DERIVATION_EXTENSION

static final int DERIVATION_EXTENSION
如果文档的模式为 XML Schema [ XML Schema Part 1],则此常量表示由 extension 派生出的。
如果遵循引用类型定义中的 {base type definition} 属性可以递归式到达其他类型定义,且至少一个涉及到的 derivation methods 是扩展,则引用类型定义由扩展从其他类型定义中派生。

另请参见:
常量字段值

DERIVATION_UNION

static final int DERIVATION_UNION
如果文档的模式为 XML Schema [ XML Schema Part 1],则此常量表示 union(如果涉及简单类型)。
如果存在两种类型定义 T1 和 T2,T1 具有 {各种} union,而其中一个 {成员类型定义} 为 T2,则引用类型定义由 union 从其他类型定义派生,例如,引用类型定义是通过 DERIVATION_RESTRICTIONDERIVATION_EXTENSION 从 T1 派生的,T2 是通过 DERIVATION_RESTRICTION 从其他类型定义派生。注意,T1 可以与引用类型定义相同,T2 可以与其他类型定义相同。

另请参见:
常量字段值

DERIVATION_LIST

static final int DERIVATION_LIST
如果文档的模式为 XML Schema [ XML Schema Part 1],则此常量表示 列表
如果存在两种类型定义 T1 和 T2,例如,引用类型定义由 DERIVATION_RESTRICTIONDERIVATION_EXTENSION 从 T1 派生,T2 由 DERIVATION_RESTRICTION 从其他类型定义派生,则引用类型定义由列表从其他类型派生,T1 具有 {各种} 列表,T2 为 {项类型定义}。注意,T1 可以与引用类型定义相同,T2 可以与其他类型定义相同。

另请参见:
常量字段值
方法详细信息

getTypeName

String getTypeName()
为相关元素或属性声明的类型的名称;如果未知,则为 null


getTypeNamespace

String getTypeNamespace()
为相关元素或属性声明的类型的名称空间;如果该元素没有声明或如果没有名称空间信息可用,则为 null


isDerivedFrom

boolean isDerivedFrom(String typeNamespaceArg,
                      String typeNameArg,
                      int derivationMethod)
此方法返回引用类型定义(即在其上调用该方法的 TypeInfo)和其他类型定义(即作为参数传递的类型定义)之间是否存在派生。

参数:
typeNamespaceArg - 其他类型定义的名称空间。
typeNameArg - 其他类型定义的名称。
derivationMethod - 在两种类型之间应用的派生类型和条件,如在此接口中提供的常量列表中描述的。
返回:
如果文档的模式为 DTD 或者没有与此文档相关的模式,则此方法将总是返回 false。如果文档的模式为 XML Schema,则该方法将为 true(如果按照派生参数从其他类型定义派生引用类型定义)。如果参数的值为 0(没有将 derivationMethod 参数的任何一位设置为 1),则该方法将返回 true(如果可以通过从引用类型定义递归{基本类型定义}、{项类型定义}或{成员类型定义} 组合到达其他类型定义)。