2009-02-05 8 views
0

Je travaille toujours sur un fichier RDF particulier, mais semble que quelque chose ne va pas dans le bon sens pour moi. Le code de mon fichier RDF est le suivant:travail sur un fichier RDF particulier dans flex

<?xml version = '1.0"?> 

<rdf:RDF xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:dc = "http://purl.org/dc/elements/1.1/" 
xmlns:dp = "http://www.telemed.uniud.it/dp/0.1/" 
xmlns:dcq = "http://purl.org/dc/qualifiers/1.0/" > 


<rdf:Description rdf:about="m021"> 
    <dc:creator>CAB</dc:creator> 
    <dc:title>m021</dc:title> 
    <dc:subject></dc:subject> 
    <dc:date>null</dc:date> 
    <dc:description></dc:description> 
    <dc:identifier>1</dc:identifier> 
    <dc:relation.requires rdf:resource="./20x/m02120x"/> 
    <dc:relation.requires rdf:resource="./10x/m02110x"/> 
    <dc:relation.requires rdf:resource="./5x/m0215x"/> 
    <dc:relation.requires rdf:resource="./2.5x/m0212.5x"/> 
    <dc:relation.requires rdf:resource="preview.jpg"/> 
    <dp:resolution rdf:parseType="Resource"> 
     <dp:unit>micron</dp:unit> 
     <dp:x>0.23235294</dp:x> 
     <dp:y>0.23046875</dp:y> 
    </dp:resolution> 
    <dp:objective rdf:parseType="Resource"> 
     <dp:magnification>20.0</dp:magnification> 
     <dp:na>0.6</dp:na> 
    </dp:objective> 
    <dp:imsize rdf:parseType="Resource"> 
     <dp:x>316</dp:x> 
     <dp:y>236</dp:y> 
    </dp:imsize> 
</rdf:Description> 

<rdf:Description rdf:about="./20x/m02120x"> 
    <dp:type>plane</dp:type> 
    <dp:magnification>20</dp:magnification> 
    <dp:matrix rdf:parseType="Resource"> 
     <dp:xrange>1-103</dp:xrange> 
     <dp:yrange>1-86</dp:yrange> 
    </dp:matrix> 
</rdf:Description> 

</rdf:RDF> 

J'ai chargé ce fichier en utilisant URLLoader et dans mon script, je suis en train d'accéder à certaines propriétés. Par exemple, je dois accéder à la propriété dp: x, imbriquée dans dp: resolution, imbriquée dans rdf: Description et dans mon esprit le bon morceau de code est:

// suppose que 'résultat: XML' est la variable contenant tous mes RDF et xmlLabel une étiquette

xmlLabel.text = 'test:' + result.Description.resolution.x;

mais ce code me donne un résultat vide.

J'ai essayé un autre (et non élégante façon) de le faire passer la ligne suivante:

xmlLabel.text = 'test:' + result.child (0) .child (11) .child (1)

et ce morceau de wokrs de code, me donnant la valeur 0,23235294 (comme prévu)

Ma question est: ce que je fais quelque chose de mal appeler les properities? J'ai aussi essayé la notation "double point" (par exemple result..Description) sans résultat.

Le problème pourrait être que le fichier sur lequel je travaille n'est pas un fichier XML valide? Dans ce cas, y a-t-il un moyen d'adapter mon RDF à un XML valide afin de le faire fonctionner?

Merci pour vos réponses

David

Répondre

1

Salut David (oui il est moi, cheng :)). La raison pour laquelle vous avez des résultats vides est que la balise est spécifiée dans un espace de noms et que vous devez la spécifier lors de l'accès à la balise. Vous trouverez des informations utiles in this flex tutorial.

Fondamentalement, vous devez déclarer une variable d'espace de noms, comme:

var rdf:Namespace = new Namespace ("http://www.w3.org/1999/02/22-rdf-syntax-ns#"); 
var dp:Namespace = new Namespace ("http://www.telemed.uniud.it/dp/0.1/"); 

puis l'utiliser lors de l'accès des nœuds, comme:

var resolution = result.ref::Description.dp::resolution