Module  java.xml
软件包  org.w3c.dom

Interface Attr

  • All Superinterfaces:
    Node


    public interface Attr
    extends Node
    Attr接口表示Element对象中的属性。 通常,属性的允许值在与文档关联的模式中定义。

    Attr对象继承了Node接口,但是由于它们实际上并不是它们描述的元素的子节点,所以DOM不认为它们是文档树的一部分。 因此, Node属性parentNodepreviousSibling ,和nextSibling具有null为值Attr对象。 DOM接受属性是元素的属性的视图,而不是与它们相关联的元素具有单独的标识; 这应该使其更有效地实现与给定类型的所有元素相关联的默认属性。 此外, Attr节点可能不是一个立即的孩子DocumentFragment 然而,他们可以关联Element包含一个内节点DocumentFragment 简而言之,DOM的用户和实现者需要意识到, Attr节点与继承Node接口的其他对象有一些共同点,但它们也是截然不同的。

    属性的有效值如下确定:如果该属性已被明确分配任何值,则该属性的属性的有效值; 否则,如果有这个属性的声明,并且该声明包含一个默认值,则该默认值是属性的有效值; 否则,该属性在结构模型中不存在,直到它已被显式添加。 请注意, Attr实例上的Node.nodeValue属性也可用于检索属性值的字符串版本。

    如果该属性未在实例文档中显式赋值,但具有与该文档相关联的模式提供的默认值,则将创建一个属性节点,其中specified设置为false 删除在模式中定义默认值的属性节点会生成一个新的属性节点,默认值为specified设置为false 如果在调用时出现确认Document.normalizeDocument() ,属性节点与specified等于false根据该模式提供的默认属性值重新计算。 如果在模式中没有默认值与此属性相关联,那么属性节点将被丢弃。

    在XML中,属性的值可以包含实体引用, Attr节点的子节点可以是TextEntityReference节点(当这些节点在使用时;参见EntityReference的描述进行讨论)。

    即使与文档关联的DTD或模式声明了某些特定类型(如标记化),DOM Core将所有属性值表示为简单字符串。

    由DOM实现执行属性值归一化的方式取决于实现对所使用的模式的了解程度。 通常, Attr节点的valuenodeValue属性最初返回由解析器给出的归一化值。 Document.normalizeDocument()之后(假定正确的选项已设置)也是如此。 但突变后可能不是这种情况,而不管是通过直接设置字符串值还是通过改变Attr子节点进行突变。 特别地,当涉及到character references时,这是正确的,因为它们不在DOM中表示,并且影响属性值归一化。 另一方面,如果实现在属性值改变时知道正在使用的模式,并且它是与CDATA不同的类型,则可以在那时再次对它进行规范化。 这对于专门的DOM实现尤其如此,例如SVG DOM实现,其以不同于字符串的内部形式存储属性值。

    下表给出了原始文档中的属性值(已解析属性),DOM中暴露的值与值序列化之间的关系的一些示例:

    Examples of the Original, Normalized and Serialized Values Examples Parsed attribute value Initial Attr.value Serialized attribute value Character reference
    "x²=5"
    "x²=5"
    "x²=5"
    Built-in character entity
    "y<6"
    "y<6"
    "y&lt;6"
    Literal newline between
     "x=5&#10;y=6"
    "x=5 y=6"
    "x=5&#10;y=6"
    Normalized newline between
    "x=5
     y=6"
    "x=5 y=6"
    "x=5 y=6"
    Entity e with literal newline
     <!ENTITY e '...&#10;...'> [...]> "x=5&e;y=6"
    Dependent on Implementation and Load Options Dependent on Implementation and Load/Save Options

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

    • 方法详细信息

      • getName

        String getName​()
        返回此属性的名称。 如果Node.localNamenull不同,则此属性是限定名称。
      • getSpecified

        boolean getSpecified​()
        True如果该属性在实例文档中被明确赋予了一个值,那么false否则。 如果应用程序更改了此属性节点的值(即使它的值与默认值相同),则设置为true 该实现可以类似地处理来自其他模式的默认值的属性,但应用程序应使用Document.normalizeDocument()来保证此信息是最新的。
      • getValue

        String getValue​()
        在检索时,属性的值作为字符串返回。 字符和一般实体引用被替换为它们的值。 另请参阅Element接口上的方法getAttribute
        在设置时,这将创建一个具有未解析的字符串内容的Text节点,即XML处理器将识别为标记的任何字符都将被视为文字文本。 另见方法Element.setAttribute()
        一些专门的实现,例如一些[ SVG 1.1 ]实现,即使在突变之后也可以自动地进行归一化; 在这种情况下,检索的值可能与设置值不同。
      • setValue

        void setValue​(String value)
               throws DOMException
        在检索时,属性的值作为字符串返回。 字符和一般实体引用被替换为它们的值。 另请参阅Element接口上的方法getAttribute
        在设置时,将创建一个具有未解析的字符串内容的Text节点,即将XML处理器识别为标记的任何字符都将视为文字文本。 另见方法Element.setAttribute()
        一些专门的实现,例如一些[ SVG 1.1 ]实现,即使在突变之后也可以自动进行归一化; 在这种情况下,检索的值可能与设置值不同。
        异常
        DOMException - NO_MODIFICATION_ALLOWED_ERR:当节点只读时引发。
      • getOwnerElement

        Element getOwnerElement​()
        该属性附加到的 Element节点或 null如果此属性未使用。
        从以下版本开始:
        1.4,DOM Level 2
      • getSchemaTypeInfo

        TypeInfo getSchemaTypeInfo​()
        与此属性相关联的类型信息。 虽然此属性中包含的类型信息在加载文档或调用Document.normalizeDocument()后保证正确, schemaTypeInfo如果节点被移动,则schemaTypeInfo可能不可靠。
        从以下版本开始:
        1.5,DOM 3级
      • isId

        boolean isId​()
        返回此属性是否已知为类型ID(即包含其所有者元素的标识符)。 当它是和它的值是唯一的,所述ownerElement该属性可以使用该方法来检索Document.getElementById 该实现可以使用几种方式来确定属性节点是否已知包含标识符:
        • 如果在加载文档时或在调用Document.normalizeDocument()时使用XML模式[ XML Schema Part 1 ]进行验证,则使用后模式验证信息集贡献(PSVI贡献)值来确定此属性是否为使用schema-determined ID定义的模式确定的ID属性在[ XPointer ]。
        • 如果在加载文档时或在调用Document.normalizeDocument()时使用DTD进行验证,则使用[ XPointer ]中的DTD-determined ID定义来确定此属性是否为DTD确定的ID属性的信息集[类型定义]值。
        • 从使用的方法Element.setIdAttribute()Element.setIdAttributeNS() ,或Element.setIdAttributeNode() ,即它是一个用户确定的ID属性;

          注意: XPointer框架(参见[ XPointer ]中的第3.2节))将DOM用户确定的ID属性视为XPointer外部确定的ID定义的一部分。

        • 使用超出本规范范围的机制,则是外部确定的ID属性。 这包括使用与XML模式和DTD不同的模式语言。

        如果在调用Document.normalizeDocument()发生验证, Document.normalizeDocument()所有用户确定的ID属性,然后根据所使用的模式重新评估所有属性节点ID信息。 因此,如果Attr.schemaTypeInfo属性包含ID类型,则isId将始终返回true。
        从以下版本开始:
        1.5,DOM 3级