XML\DTD 基础

本文详细介绍了DTD(Document Type Definition)的基本概念,包括其在XML文档中的作用、内部与外部DTD的格式,以及如何声明元素、实体等内容。通过实例展示了DTD在规范XML文档结构上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DTD

DTD: Document type defination,文档类型定义(DTD)可定义合法的XML文档构建模块,分为内部和外部。内部格式:<!DOCTYPE root-element [element-declarations]>,外部格式:<!DOCTYPE root-element SYSTEM "filename">。实例:

<!-- 内部 -->
<?xml version="1.0">
<!DOCTYPE note [
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>

<note>
<to>sjj</to>
<from>zzz</form>
<heading>forget</heading>
<body>forget all things</body>
</note>


<!-- 外部 -->
<?xml version="1.0">
<!DOCTYPE note SYSTEM "note.dtd">

<note>
<to>sjj</to>
<from>zzz</form>
<heading>forget</heading>
<body>forget all things</body>
</note>
# 其中 note.dtd 与此 XML 文件位于同一目录下(否则应该用绝对目录)

PCDATA 与 CDATA

PCDATA:被解析的字符数据(parsed character data),PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。
文本中的标签会被当作标记来处理,而实体会被展开
不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &amp;&lt; 以及 &gt; 实体来分别替换它们。

CDATA:字符数据(character data)。CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。

元素

元素是 XML 以及 HTML 文档的主要构建模块。XML 元素的例子是 “note” 和 “message” 。元素可包含文本、其他元素或者是空的。

声明一个元素

格式:

<!ELEMENT element-name category>
<!-- or -->
<!ELEMENT element-name (element-content)

空元素

空元素通过类别关键词 EMPTY 声明:

<!ELEMENT element-name EMPTY>
<!-- 实例 -->
<!-- dtd -->
<!ELEMENT br EMPTY>
<!-- xml -->
<br />

只有 PCDATA 的元素

<!ELEMENT element-name (#PCDATA)>
<!-- 实例 -->
<!ELEMENT from (#PCDATA)>

带有任何内容的元素

通过 ANY 声明。

<!ELEMENT element-name ANY>
<!-- 实例 -->
<!ELEMENT not ANY>

带有子元素的元素

<!ELEMENT element-name (child1)>
<!-- or -->
<!ELEMENT element-name (child1,child2,...)>

<!-- 实例 -->
<!ELEMENT note (to,from,heading,body)>

声明元素出现次数

<!-- 出现一次 -->
<!ELEMENT element-name (child-name)>
<!-- 实例 -->
<!ELEMENT note (message)>

<!-- 最少出现一次 -->
<!ELEMENT element-name (chil-name+) >
<!-- 实例 -->
<!ELEMENT note (message+)>

# 出现 0 次或多次用 *
# 出现 0 次或 1 次用 ?

声明"非…/即…" 内容

<!ELEMENT note (to,from,header,(message|body))>

# "note" 元素必须包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。

声明混合型的内容

<!ELEMENT note (#PCDATA|to|from|header|message)*>
# "note" 元素可包含出现零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。

实体

实体是用于定义引用普通文本或特殊字符的快捷方式的变量。

  • 实体引用是对实体的引用
  • 实体可在内部或外部进行声明
  • 实体还可以分为通用实体和参数实体

内部实体声明

语法:

<!ENTITY entity-name "entity-value">
# 注意与单个元素定义的差别,这里是 “""”,单个元素无 “""” 或者使用 “()”

实例:

<!-- DTD -->
<!ENTITY writer "zzz">
<!ENTITY copyright "Copyright zzzsdust.com">

<!-- XML -->
<auther>&writer;&copyright;</author>

一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 ( ; )。

外部实体声明

语法:

<!ENTITY entity-name SYSTEM "URI/URL">

实例:

<!-- DTD -->
<!ENTITY writer SYSTEM "http://www.zzzsdsut.com/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.zzzsdsut.com/entities.dtd">

<!-- XML -->
<author>&writer; &copywright;</author>

通用实体

&实体名; 引用的实体,在 DTD 中定义,在 XML 文档中引用。

参数实体

  • % 实体名(空格不可少),在 DTD 中定义,并且只能在 DTD 中使用,用 %实体名; 引用
  • 只有在 DTD 文件中,参数实体的声明才能引用其他实体
  • 可外部引用、内部引用

实例:

<!ENTITY % an_element "<!ELEMENT mytag (subtag)>">
<!ENTITY % remote_dtd SYSTEM "http://zzzsdust.com/remote.dtd">
%an_element; %remote_dtd;

参考:DTD 教程

内容概要:本文档《信息安全领域实战项目.docx》详细介绍了网络安全渗透测试的具体步骤和实战案例。文档从信息收集开始,逐步深入到漏洞验证、漏洞攻击和权限提升等环节。首先,通过使用工具如FOFA进行资产收集,识别出目标服务器开放的多个端口,并进一步通过后台扫描工具发现潜在的敏感文件。接着,针对发现的Grafana任意文件读取漏洞(CVE-2021-43798)和ActiveMQ任意文件上传漏洞(CVE-2016-3088),分别进行了详细的漏洞验证与攻击演示,包括具体的payload构造、利用方式及攻击效果展示。最后,探讨了CVE-2021-4034 Linux polkit提权漏洞的应用场景及其利用方法。此外,文档还涵盖了政务智慧信息系统安全建设项目的背景、目标、建设内容以及相关的人才需求分析。 适合人群:具备一定网络安全基础,尤其是对渗透测试感兴趣的初学者或中级技术人员。 使用场景及目标:①帮助读者理解并掌握从信息收集到漏洞利用的完整渗透测试流程;②提供实际操作案例,使读者能够学习如何识别和利用常见的Web应用漏洞;③培养读者在面对真实世界的安全问题时,能够运用所学知识进行有效的分析和解决。 阅读建议:由于文档内容涉及较多的技术细节和实战操作,建议读者在阅读过程中结合实际环境进行练习,并参考官方文档或其他权威资料加深理解。同时,注意合法合规地使用所学技能,确保所有活动都在授权范围内进行。
内容概要:本文详细介绍了FracPredictor这一基于深度学习的裂缝预测工具及其应用。首先探讨了数据处理部分,如利用滑窗处理时序+空间特征混合体的方法,以及如何将岩石力学数据转换为适合神经网络的格式。接着深入剖析了模型架构,包括时空双流网络、注意力机制用于跨模态融合、HybridResBlock自定义层等创新设计。此外,文章还分享了训练技巧,如渐进式学习率衰减、CosineAnnealingWarmRestarts调度器的应用。对于可视化方面,则推荐使用PyVista进行三维渲染,以直观展示裂缝扩展过程。文中还提到了一些实用的小技巧,如数据预处理中的自动标准化、配置文件参数调整、以及针对特定地质条件的优化措施。最后,通过多个实际案例展示了FracPredictor在提高预测准确性、降低计算成本方面的优势。 适合人群:从事石油工程、地质勘探领域的研究人员和技术人员,尤其是对裂缝建模与压裂模拟感兴趣的从业者。 使用场景及目标:适用于需要高效、精准地进行裂缝预测和压裂模拟的工程项目。主要目标是帮助用户掌握FracPredictor的工作原理,学会从数据准备到结果可视化的完整流程,从而优化压裂方案,减少工程风险。 其他说明:文章不仅提供了详细的代码示例,还附带了丰富的实战经验和注意事项,有助于读者更好地理解和应用这项新技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值