我希望以dtd中定义的任何顺序列出所需元素,但不知道我该怎么做.
例如,我有以下定义:
<!ELEMENT parent (child1, child2, child3)>
Run Code Online (Sandbox Code Playgroud)
这个dtd声明将成功验证以下xml:
<parent>
<child1></child1>
<child2></child2>
<child3></child3>
</parent>
Run Code Online (Sandbox Code Playgroud)
但在以下情况下,xml将不会通过验证:
<parent>
<child2></child2>
<child1></child1>
<child3></child3>
</parent>
Run Code Online (Sandbox Code Playgroud)
其中一个可能的解决方案是申报
<!ELEMENT parent (child1 | child2 | child3)>
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,虽然验证成功,但其中一个孩子可能会丢失.
当所需元素的列表可以按任何顺序出现时,我需要正确的dtd元素声明.
我有一个XSD(XML Schema),我需要转换为DTD.有没有免费的实用工具或简单的方法来实现这一目标?以XSLT为例?Python脚本也是受欢迎的.
注意:这是Free DTD到XSD转换实用程序问题的相反方向?
我知道转换可能会丢失信息......
我尝试过XMLSpy或oXygenXML,但它不是免费的,我没有定制转换的可能性.
我正在使用xml和xsl创建一个左导航系统.在我尝试在xml文档中使用特殊字符之前,一切都很顺利.我正在使用»,我得到了错误.
原因:引用未定义的实体'raquo'.
错误代码:-1072898046
我该如何工作?
我的XML(a.xhtml)就像这样开始
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
...
Run Code Online (Sandbox Code Playgroud)
我的代码就像这样开始
use XML::XPath;
use XML::XPath::XMLParser;
my $xp = XML::XPath->new(filename => "a.xhtml");
my $nodeset = $xp->find('/html/body//table');
Run Code Online (Sandbox Code Playgroud)
它非常慢,事实证明它花了很多时间来获得DTD(http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd).
有没有办法在Perl XML :: family中显式声明HTTP代理服务器?我讨厌修改原始的a.xhtml文档,比如拥有DTD的本地副本.
您是否知道将从一组XML文件样本中派生出DTD(或其他XML结构规范格式)的工具?
目前我们对xml编码DSL的唯一(自动)验证是用Perl编写的遗留解析器,但出于一致性原因,所有perl代码必须移植到C-sharp.
是否有可用于XHTML 1.0过渡支持和RDFa支持的W3C文档类型?
我知道XHTML + RDFa 1.0(http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd)DTD但是XHTML 1.1与我当前的网站不兼容.似乎还有一个HTML4 + RDFa 1.0(http://www.w3.org/MarkUp/DTD/html4-rdfa-1.dtd)DTD可用.
我不服务XHTML 1.1的主要原因是Internet Explorer ofcourse,尽管如果没有别的办法,我可能会将它作为文本/ html用于IE用户.
我有以下代码(C#),它需要太长时间,它会抛出异常:
new XmlDocument().
LoadXml("<?xml version='1.0' ?><!DOCTYPE note SYSTEM 'http://someserver/dtd'><note></note>");
Run Code Online (Sandbox Code Playgroud)
我明白为什么会那样做.我的问题是如何让它停止?我不关心DTD验证.我想我可以正则代替它,但我正在寻找更优雅的解决方案.
背景:
实际的XML是从我不拥有的网站收到的.当站点正在进行维护时,它返回带有DOCTYPE的XML,该DOCTYPE指向维护期间不可用的DTD.所以我的服务变得不必要,因为它试图为我需要解析的每个XML获取DTD.
这是异常堆栈:
Unhandled Exception: System.Net.WebException: The remote name could not be resolved: 'someserver'
at System.Net.HttpWebRequest.GetResponse()
at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials)
at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials)
at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
at System.Xml.XmlTextReaderImpl.OpenStream(Uri uri)
at System.Xml.XmlTextReaderImpl.DtdParserProxy_PushExternalSubset(String systemId, String publicId)
at System.Xml.XmlTextReaderImpl.DtdParserProxy.System.Xml.IDtdParserAdapter.PushExternalSubset(String systemId, String publicId)
at System.Xml.DtdParser.ParseExternalSubset()
at System.Xml.DtdParser.ParseInDocumentDtd(Boolean saveInternalSubset)
at System.Xml.DtdParser.Parse(Boolean saveInternalSubset)
at System.Xml.XmlTextReaderImpl.DtdParserProxy.Parse(Boolean saveInternalSubset)
at System.Xml.XmlTextReaderImpl.ParseDoctypeDecl()
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader …Run Code Online (Sandbox Code Playgroud) 我和这里有很多相同的问题,但我有xmlns:android和xml = ...标签.我仍然有同样的错误.我不想在设置中单击忽略而不是警告,因此这里发布的问题.
来源是:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</GridLayout>
Run Code Online (Sandbox Code Playgroud)
错误:
"没有检测到文档的语法约束(DTD或XML模式).grid_layout_test2.xml/SomeProject/res/layout line 1 XML Problem"
是否可以在另一个DTD中包含DTD?(我的意思不是将第二个DTD复制并粘贴到第一个DTD中.我的意思是在第一个DTD中有一个指向第二个DTD的指针.)