xml-model处理指令不直接指向.sch文件,而应指向由schematron编译生成的xslt文件;2. schematron是声明性规则语言,需通过xslt处理器编译为xslt样式表才能执行;3. xml-model通过schematypens属性标识模式类型,href指向可执行的验证器文件;4. 常见错误是将href指向原始.sch文件,导致验证无法进行;5. xml-model支持多种模式语言,包括dtd、xsd、relax ng等,需正确设置type和schematypens属性以实现关联;6. 该机制依赖工具支持,主要用于提供验证提示而非强制执行。

当你需要让XML文档本身“知道”它应该遵循哪些验证规则时,
xml-model
要将
xml-model
xml-model
href
.sch
这是它的基本结构:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="your-schematron-compiled.xsl" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<!-- 你的XML文档内容 -->
<root>
<element>一些数据</element>
</root>这里有几个关键点:
href
xsltproc
.sch
.xsl
.xsl
type
application/xml
text/xsl
application/xml
schematypens
schematypens
href
http://purl.oclc.org/dsdl/schematron
所以,整个流程是:先编写Schematron规则(
.sch
xml-model
xml-model
这绝对是初学者最容易感到困惑的地方,甚至一些有经验的开发者也会时不时地在这里打个问号。简单来说,Schematron本身并不是一个执行引擎,它更像是一种“声明性”的语言,用来描述你的XML文档应该满足哪些业务规则和结构约束。它定义了断言(assert)、报告(report)等概念,让你能以一种非常直观的方式写出“如果这个条件成立,那么就报告一个错误”这样的规则。
而XSLT(eXtensible Stylesheet Language Transformations)则是一种真正的“处理”语言,它能够转换XML文档。Schematron之所以能工作,很大程度上是因为它被设计成可以方便地转换为XSLT。主流的Schematron处理器,比如ISO Schematron实现,就是通过一系列XSLT样式表将你的
.sch
所以,当你写好一个Schematron文件(例如
my-rules.sch
xsltproc
iso_schematron_skeleton_for_saxon.xsl
my-rules-compiled.xsl
my-rules-compiled.xsl
xml-model
这种设计的好处在于,Schematron不需要自己实现一套复杂的执行逻辑,它直接复用了成熟且高效的XSLT处理器生态。对于我们使用者而言,这意味着Schematron的验证能力可以无缝集成到各种支持XSLT的工具和环境中。
<?xml-model?>
这是一个非常常见的问题,几乎可以肯定地说,你犯了那个经典的错误:直接把
href
.sch
xml-model
href
.sch
所以,如果你的
<?xml-model href="my-rules.sch" ...?>
my-rules.sch
另一个可能的原因是,你使用的工具或浏览器根本就不支持
xml-model
xml-model
xml-model
因此,解决办法很简单:
.sch
xml-model
href
xml-model
xml-model
当然可以!
xml-model
xml-model
关键在于正确使用
type
schematypens
href
DTD (Document Type Definition) DTD是XML最早的模式语言。
<?xml-model href="your-dtd.dtd" type="application/xml-dtd"?>
或者,如果DTD是内部子集,则不需要
xml-model
DOCTYPE
XML Schema (XSD) XML Schema是W3C推荐的强大模式语言,通常用于定义复杂的XML结构和数据类型。
<?xml-model href="your-schema.xsd" type="application/xml" schematypens="http://www.w3.org/2001/XMLSchema"?>
这里
type
application/xml
schematypens
Relax NG (RELAX NG) Relax NG是一种简洁且强大的模式语言,通常有两种语法:XML语法和紧凑语法。
<?xml-model href="your-relaxng-xml.rng" type="application/relax-ng+xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="your-relaxng-compact.rnc" type="application/relax-ng-compact-syntax" schematypens="http://relaxng.org/ns/structure/1.0"?>
schematypens
xml-model
以上就是XML的xml-model处理指令如何关联Schematron规则?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号