我试图弄清楚是否在xml文档中正确声明了DTD元素。据我所知,xsltproc或xmllint均未在以下文档中检测到有效性错误:
<!DOCTYPE basic-dtd [
<!ENTITY title "The Book of Love">
<!ENTITY author "Jeffrey Halcomb">
<!ELEMENT basic-dtd (title,author,subject,checked-out)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT checked-out EMPTY>
]>
<basic-dtd>
<author>&author;</author>
<title>&title;</title>
<subject>A treatise on love as a driving elemental force in nature</subject>
<checked-out>Yes</checked-out>
</basic-dtd>
在我的doctype指令中,我(相信)我已指定:
但是,当我针对此xml(xsltproc basic-dtd.xsl basic-dtd.xml)运行以下样式表时,它没有报告错误/警告。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/basic-dtd">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
同样,当我运行xmllint(xmllint --noent basic-dtd.xml)时,它不会报告任何错误。
xsltproc和xmllint(带有--noent)会处理实体,如果使用未知实体,则会出错。
我是使用苹果处理器来转换/打印orange-xml(该作业使用了错误的工具),还是已知功能?
谢谢,
汤姆