XML的notation声明语法是什么?

<p&gt;xmlnotation声明用于定义未解析实体的数据类型和关联

</div&gt;<p&gt;这表明名为 "gif" 的notation与处理GIF图像的应用程序相关联。</p&gt;<p&gt;<strong&gt;PUBLIC标识符</strong&gt;</p&gt;<p&gt;<code&gt;PUBLIC</code&gt; 关键字允许使用一个公共标识符,这通常是一个正式注册的名称。系统标识符作为备用,以防公共标识符不可用。例如:</p&gt;<div class="code" style="position:relative; padding:0px; margin:0px;"&gt;<pre class='brush:xml;toolbar:false;'&gt;&lt;!NOTATION svg PUBLIC &quot;-//W3C//DTD SVG 1.1//EN&quot; &quot;http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd&quot;&gt;</pre&gt;

</div&gt;<p&gt;这里,公共标识符是SVG 1.1 DTD的正式名称,系统标识符是DTD的URI。</p&gt;<p&gt;<strong&gt;使用案例</strong&gt;</p&gt;<p&gt;假设有一个XML文档需要嵌入一个未解析的GIF图像。首先,声明一个notation:</p&gt;<div class="code" style="position:relative; padding:0px; margin:0px;"&gt;<pre class='brush:xml;toolbar:false;'&gt;&lt;!NOTATION gif SYSTEM &quot;image/gif&quot;&gt;</pre&gt;

</div&gt;<p&gt;然后,在文档中声明一个未解析的实体:</p&gt;<div class="code" style="position:relative; padding:0px; margin:0px;"&gt;<pre class='brush:xml;toolbar:false;'&gt;&lt;!ENTITY logo SYSTEM &quot;images/logo.gif&quot; NDATA gif&gt;</pre&gt;

</div&gt;<p&gt;<code&gt;NDATA gif</code&gt; 告诉解析器,这个实体的数据类型由名为 "gif" 的notation处理。</p&gt;<p&gt;<strong&gt;

</div&gt;<p&gt;然后,声明一个未解析的实体:</p&gt;<div class="code" style="position:relative; padding:0px; margin:0px;"&gt;<pre class='brush:xml;toolbar:false;'&gt;&lt;!ENTITY report SYSTEM &quot;reports/annual_report.pdf&quot; NDATA pdf&gt;</pre&gt;

</div&gt;<p&gt;最后,在文档中使用这个实体:</p&gt;<div class="code" style="position:relative; padding:0px; margin:0px;"&gt;<pre class='brush:xml;toolbar:false;'&gt;&lt;document&gt; &lt;title&gt;Annual Report&lt;/title&gt; &lt;content&gt;&amp;report;&lt;/content&gt;&lt;/document&gt;</pre&gt;

</div&gt;<p&gt;当XML解析器遇到 <code&gt;&amp;report;</code&gt; 实体时,它会知道这个实体的数据类型是 "pdf",并且应该使用 <code&gt;application/pdf</code&gt; 相关的程序来处理它。</p&gt;<p&gt;如何处理XML文档中的非法字符?</p&gt;<p&gt;XML文档中的非法字符是指那些不符合XML规范的字符,例如某些控制字符和特殊符号。处理这些字符对于确保XML文档的有效性和可解析性至关重要。</p&gt;<p&gt;<strong&gt;使用字符实体引用</strong&gt;</p&gt; <div class="aritcle_card"&gt;

</div&gt;<p&gt;需要注意的是,CDATA sections 不能包含 <code&gt;]]&gt;</code&gt; 序列。</p&gt;<p&gt;<strong&gt;删除或替换非法字符</strong&gt;</p&gt;<p&gt;在某些情况下,你可能需要删除或替换非法字符。这通常在处理来自外部源的数据时发生。你可以使用编程语言中的字符串处理函数来实现这一点。</p&gt;<p&gt;例如,在Python中,你可以使用正则表达式来删除或替换非法字符:</p&gt;<div class="code" style="position:relative; padding:0px; margin:0px;"&gt;<pre class='brush:python;toolbar:false;'&gt;import redef remove_invalid_xml_chars(text): &quot;&quot;&quot;Removes invalid XML characters from a string.&quot;&quot;&quot; # XML 1.0 允许的字符范围 pattern = re.compile(u'[^\x09\x0A\x0D\x20-\uD7FF\uE000-\uFFFD\u10000-\u10FFFF]') return pattern.sub('', text)text = &quot;This string contains an invalid character: \x01&quot;cleaned_text = remove_invalid_xml_chars(text)print(cleaned_text) # 输出: This string contains an invalid character:</pre&gt;

</div&gt;<p&gt;<strong&gt;字符编码</strong&gt;</p&gt;<p&gt;确保你的XML文档使用正确的字符编码,例如UTF-8。字符编码声明应位于XML文档的开头:</p&gt;<div class="code" style="position:relative; padding:0px; margin:0px;"&gt;<pre class='brush:xml;toolbar:false;'&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</pre&gt;

</div&gt;<p&gt;如果字符编码不正确,XML解析器可能会无法正确解释文档中的字符。</p&gt;<p&gt;<strong&gt;验证XML文档</strong&gt;</p&gt;<p&gt;使用XML验证器可以帮助你检测XML文档中的非法字符和其他错误。有许多在线和离线XML验证器可供使用。</p&gt;<p&gt;<strong&gt;处理来自外部源的数据</strong&gt;</p&gt;<p&gt;当处理来自外部源的数据时,务必小心处理非法字符。对数据进行清洗和验证,以确保它符合XML规范。</p&gt;<p&gt;<strong&gt;选择合适的方法</strong&gt;</p&gt;<p&gt;选择哪种方法取决于你的具体需求和情况。如果只需要处理少量特殊字符,使用字符实体引用可能就足够了。如果需要处理包含大量特殊字符的文本块,CDATA sections 可能更合适。如果需要处理来自外部源的数据,可能需要删除或替换非法字符。</p&gt;<p&gt;XML Schema与DTD有什么

</div&gt;<p&gt;使用XML Schema:</p&gt;<div class="code" style="position:relative; padding:0px; margin:0px;"&gt;<pre class='brush:xml;toolbar:false;'&gt;&lt;?xml version=&quot;1.0&quot;?&gt;&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt; &lt;xs:element name=&quot;book&quot;&gt; &lt;xs:complexType&gt; &lt;xs:sequence&gt; &lt;xs:element name=&quot;title&quot; type=&quot;xs:string&quot;/&gt; &lt;xs:element name=&quot;author&quot; type=&quot;xs:string&quot;/&gt; &lt;xs:element name=&quot;publisher&quot; type=&quot;xs:string&quot;/&gt; &lt;/xs:sequence&gt; &lt;/xs:complexType&gt; &lt;/xs:element&gt;&lt;/xs:schema&gt;</pre&gt;

</div&gt;<p&gt;XML文档:</p&gt;<div class="code" style="position:relative; padding:0px; margin:0px;"&gt;<pre class='brush:xml;toolbar:false;'&gt;&lt;book xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:noNamespaceSchemaLocation=&quot;book.xsd&quot;&gt; &lt;title&gt;The Lord of the Rings&lt;/title&gt; &lt;author&gt;J.R.R. Tolkien&lt;/author&gt; &lt;publisher&gt;Allen &amp; Unwin&lt;/publisher&gt;&lt;/book&gt;</pre&gt;

</div&gt;<p&gt;<strong&gt;总结</strong&gt;</p&gt;<p&gt;XML Schema比DTD更强大、更灵活,并且是现代XML开发的首选。然而,DTD仍然在某些情况下有用,特别是当需要与旧的系统兼容时。</p&gt;

以上就是XML的notation声明语法是什么?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1429941.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫

关于作者

上一篇 2025年12月17日 03:10:32
下一篇 2025年12月17日 03:10:44

相关推荐

发表回复

登录后才能评论
关注微信