2011-01-19 6 views
1

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.

Répondre

6

XSD est XML lui-même. Vous pouvez travailler avec comme avec n'importe quel fichier XML.

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

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). –

+2

C'est ce à quoi 'DOMDocument :: loadXML ($ source)' est destiné. ;-) – rik

+0

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. –

Questions connexes