菜鸟-创作你的创作

XML中的属性学习教程

下面给你整理一份系统、详细、易懂的《XML 属性学习教程》,帮助你全面掌握 XML 属性的概念、语法、类型、用法与注意事项。


📘 一、什么是 XML 属性?


📘 二、XML 属性的基本语法

<元素名 属性1="值1" 属性2='值2'>内容</元素名>

示例:

<book id="b001" category="Science">
    <title>宇宙简史</title>
</book>


📘 三、XML 属性的类型

XML 本身属性类型比较简单,主要在 DTD 或 XSD 中指定属性类型


1️⃣ DTD 中的属性类型

类型说明
CDATA任意文本(最常用)
ID唯一标识符,全局唯一
IDREF引用某个 ID
IDREFS多个 ID,用空格分隔
NMTOKEN单个名字字符(字母、数字、下划线、连字符)
NMTOKENS多个名字字符,用空格分隔
ENUMERATION枚举类型(限定取值)

示例 DTD

<!ELEMENT book (title, author)>
<!ATTLIST book 
    id ID #REQUIRED
    category (Science|History|Novel) "Novel"
>


2️⃣ XSD 中的属性类型(更强大)

XSD 可以定义:

XSD 示例

<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="category" type="xs:string" use="optional" default="Novel"/>


📘 四、XML 属性使用规则

  1. 唯一性:一个元素中同名属性只能出现一次
  2. 引号:属性值必须使用单引号 ' 或双引号 "
  3. 合法字符
    • 不允许出现 <>& 等特殊字符(需转义或用 CDATA)
  4. 命名规则
    • 属性名遵循 XML 名称规则(字母开头,可包含字母、数字、下划线、连字符)
  5. 默认值:可在 DTD/XSD 中指定

📘 五、XML 属性与元素内容的对比

特性元素属性
是否可以有子元素可以不可以
是否可以有多值多值需嵌套元素一次只能一个值
适用场景内容复杂,结构化数据简单、描述性、标识性信息
可空可以为空元素必须有默认值或可选

📘 六、XML 属性的访问与操作


1️⃣ Java DOM

Element book = (Element) doc.getElementsByTagName("book").item(0);
String id = book.getAttribute("id");
String category = book.getAttribute("category");
book.setAttribute("category", "History"); // 修改属性


2️⃣ Python lxml

book = tree.find('book')
id_val = book.get('id')
category_val = book.get('category')
book.set('category', 'History')


3️⃣ JavaScript(浏览器)

let book = document.querySelector('book');
let id = book.getAttribute('id');
book.setAttribute('category', 'History');


📘 七、XML 属性最佳实践

  1. 尽量用元素表达复杂内容
    • 属性适合标识、标记、状态、简单信息
    • 内容复杂的数据用子元素
  2. 命名规范
    • 使用有意义、简短、统一的命名
  3. 统一编码
    • 属性值中如包含中文或特殊字符,统一使用 UTF-8 并注意转义
  4. 避免大量属性
    • 过多属性会影响可读性和维护性
  5. 配合 DTD/XSD 校验
    • 保证属性的合法性、类型、安全性

📘 八、综合示例

&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;bookstore>
    &lt;book id="b001" category="Science">
        &lt;title>宇宙简史&lt;/title>
        &lt;author>Stephen Hawking&lt;/author>
        &lt;price currency="USD">68&lt;/price>
    &lt;/book>
&lt;/bookstore>


📘 九、总结

  1. XML 属性用于描述元素的额外信息
  2. 属性值必须用引号、且同名属性不能重复
  3. 属性适合存放简单信息,元素适合存放复杂数据
  4. DTD/XSD 可对属性类型、是否必填、默认值、枚举值进行约束
  5. 操作属性的方法在 Java、Python、JS 中都很类似
退出移动版