Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用动态元素为XML创建验证文件?_Xml_Dtd - Fatal编程技术网

如何使用动态元素为XML创建验证文件?

如何使用动态元素为XML创建验证文件?,xml,dtd,Xml,Dtd,我需要为以下XML创建验证文件(DTD或模式或其他内容): <?xml version="1.0" encoding="UTF-8"?> <Result> <StatusCode>1</StatusCode> <StatusMessage> <SSPReturnMessage> <S>false</S> <Date>23-Jan-2013 14

我需要为以下XML创建验证文件(DTD或模式或其他内容):

<?xml version="1.0" encoding="UTF-8"?>
<Result>
  <StatusCode>1</StatusCode>
  <StatusMessage>
     <SSPReturnMessage>
       <S>false</S>
       <Date>23-Jan-2013 14:33</Date>
       <EL>
         <E EC="473">
            <ES><![CDATA[Error message]]></ES>
         </E>
       </EL>
     </SSPReturnMessage>
  </StatusMessage>
  <Data>
    <LocalPort>-1</LocalPort>
    <TunnelID></TunnelID>
  </Data>
</Result>  

1.
假的
2013年1月23日14:33
-1
数据标签是可选的,里面的标签可以是任何东西(任何标签名称)。

问题是如何做到这一点以及使用哪种技术?DTD还是模式?或者是别的什么

使用DTD无法做到这一点。您可以将
数据
声明为:

<!ELEMENT Data ANY>

但是
数据的任何子元素仍然需要声明(您不能这样做,因为您不知道这些元素将是什么)


我认为您是正确的,需要在XSD中使用
xs:any

您所说的验证是什么意思,只是标记或日期之类的东西是一种有效的dateValidate方法,它可以简化正式语法,精确声明哪些元素和引用可能出现在特定类型的文档中,以及哪些元素,内容和属性是。基本上,主要问题是如何动态验证从一开始就不知道的内部数据标记。@Mark也许我需要使用Schema with:这将跳过内部数据标记的解析。我知道validate在字典中的含义-但在XML中,if可能意味着检查它是否是有效的XML,XML包含scema或检查数据是否有效谢谢,我想我将使用XSD作为解决方案。