J'ai besoin d'extraire le contenu d'un fichier XSD en utilisant PHP. Je ne veux pas le valider par rapport à un fichier XML; Je dois juste prendre quelques noeuds et vérifier quelques attributs.Obtenir du contenu XSD en utilisant PHP
Voici mon exemple 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>
Je ne sais pas si cela est possible, donc je ne fais que demander à un expert sur StackOverflow.
Merci! PS: J'utilise CodeIgniter, donc si quelqu'un connaît une extension ou similaire pour le faire, publiez ici s'il vous plaît.
EDIT: Problème résolu!
Voici un lien qui pourrait aider quelqu'un avec le même problème que moi:
http://www.php.net/manual/en/domdocument.load.php#57911
Simplement, quelqu'un a utilisé la classe DOMXPath pour naviguer dans le XSD lire avant d'utiliser la classe DOMDocument (comme rik m'a dit) . Le XSD n'était pas vide. J'essayais d'imprimer_r, de var_dump et de faire écho aux nœuds mais, évidemment, il n'y avait pas d'informations comme un XML classique.
Merci rik. Je vérifie cela, mais mon XSD n'est pas un fichier; c'est une ressource chargée à partir d'une URL externe (en utilisant HttpRequest). –
C'est ce à quoi 'DOMDocument :: loadXML ($ source)' est destiné. ;-) – rik
Oups, c'est vrai. Désolé, je suis un peu novice avec ça. En utilisant cette fonction, PHP génère un avertissement et mon $ doc est vide. Mais quand j'ouvre la même URL sur IE, je peux voir l'ensemble XSD. Que penses-tu de cela? Aucune suggestion? Merci encore rik :) EDIT: en utilisant 'load' au lieu de 'loadXML' résout mon problème. –