【问题标题】:How can you enforce XSD?如何强制执行 XSD?
【发布时间】:2010-09-22 05:18:01
【问题描述】:

当我发现它时,我刚开始将旧的 DTD 切换到 XSD,我想知道如何使用我的 XML 文件强制执行 XSD?我已经看到了 W3C 验证器,但我希望有一种方法可以在发现 XSD 错误时使程序不在浏览器中运行。这可能吗?

【问题讨论】:

  • 再次,“程序”是用什么语言编写的?
  • 不,你没有编辑。编辑后,您必须单击“保存”;)
  • @Chad 我正在使用以下所有内容,PHP/XML/HTML/Javascript/XSD....但 XSD 仅用于检查 XML。
  • enforcing XSD 规则只能通过验证 parser 来完成。您使用的是什么解析器(又名,什么语言/平台)?
  • @Metropolis,您还没有提到要解决“互操作性”问题。 XSD 文件的最大好处是,作为服务提供商,我可以为您作为新客户提供一份明确的合同,该合同规定了您必须向我发送数据的格式。然后我们可以使用它从语义问题中过滤掉任何语法问题。希望能帮助您了解 XSD 的用途。

标签: php xml xsd


【解决方案1】:

是的,这可以使用可用于大多数通用语言的验证 XML 解析器来实现。

好的,那就是 PHP,然后,直接从谷歌第一次点击“验证 XML PHP”:

<?php

$xml = new DOMDocument(); 
$xml->load('./lures.xml');

if (!$xml->schemaValidate('./lures.xsd')) { 
   echo "invalid<p/>";
} 
else { 
   echo "validated<p/>"; 
} 

?>

【讨论】:

  • 当然,只要您告诉我们您正在开发什么语言/环境
  • 我并不太关心使用解析器......我已经知道可以做到这一点。我真正想知道的是,是否可以在页面加载到浏览器时直接完成。但是非常感谢这个例子:) +1。我也没有真正欣赏“第一次谷歌点击”,就好像我还没有寻找它一样。如果我没有,我就不会在这里。
  • 那么您需要详细说明。您正在验证什么 XML?它是页面内容的一部分吗?是别的吗?它来自哪里?
  • 好吧,直到我提出这个问题......我认为它不需要那么多细节。因为我想我不是在寻找一种在语言中执行此操作的方法……我在问是否可以从浏览器中完成。
  • @Metropolis - 浏览器包含并使用 XML 解析器。通常他们不会针对 XSD 进行验证。
【解决方案2】:

XSD 规则的执行不能直接在 XML 中完成,因为它是一种文本文件格式,没有内在的逻辑或方法来检查自身的有效性。

为了强制执行规则,您需要使用验证解析器 - 此解析器可以加载 XML 和 XSD 并根据 XSD 检查 XML 的有效性。 DTD 也是如此。

【讨论】:

  • 那么如果是这样的话......有什么理由从.xml文件中引用.xsd文件吗?
  • @Metropolis - 如果没有别的,它作为参考很方便。您可以使用解析器来提取 XSD 引用,以便查找/获取 XSD 并针对它进行验证。
猜你喜欢
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
  • 2012-12-05
  • 2019-08-11
  • 2011-08-09
  • 1970-01-01
相关资源
最近更新 更多