使用PHP获取XSD内容

时间:2011-01-19 17:33:16

标签: php xml codeigniter xsd

我需要使用PHP提取XSD文件的内容。 我不想针对XML验证;我只需要取一些节点并检查一些属性。

这是我的XSD示例:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:import namespace="http://www.opengis.net/gml" schemaLocation="somelocation.xsd" /> 
  <xsd:complexType name="nameType">
    <xsd:complexContent>
       <xsd:extension base="gml:AbstractFeatureType">
         <xsd:sequence>
             <xsd:element maxOccurs="1" minOccurs="0" name="x" nillable="true" type="xsd:int" /> 
             <xsd:element maxOccurs="1" minOccurs="0" name="y" nillable="true" type="xsd:int" /> 
             <xsd:element maxOccurs="1" minOccurs="0" name="z" nillable="true" type="xsd:decimal" /> 
         </xsd:sequence>
       </xsd:extension>
  </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="lz_anual_250" substitutionGroup="gml:_Feature" type="layerType" /> 
</xsd:schema>

我不知道这是否可行,所以我只是向StackOverflow的专家询问。

谢谢!

PS:我正在使用CodeIgniter,所以如果有人知道任何扩展或类似的话,请在这里发帖。

编辑:问题解决了!

这是一个可以帮助遇到与我相同问题的人的链接:

http://www.php.net/manual/en/domdocument.load.php#57911

简单地说,有人使用DOMXPath类在使用DOMDocument类之前浏览XSD读取(就像rik告诉我的那样)。 XSD不是空的。我试图print_r,var_dump并回显节点,但显然不包含像经典XML那样的信息。

1 个答案:

答案 0 :(得分:7)

XSD本身就是XML。您可以像使用任何XML文件一样使用它。

$doc = new DOMDocument();
$doc->load('your.xsd');
// do whatever you want