Question

j'ai ce fichier xml

<?xml version="1.0" encoding="UTF-8"?>
<bo:C837ClaimParent xsi:type="bo:C837ClaimParent"     
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
xmlns:bo="http://somelongpathHere/process/bo">
<claimAux>
...
</claimAux>
<enterpriseClaim>
...
    <patientAccountNumber>data to capture here</patientAccountNumber>
</enterpriseClaim>

Je dois faire correspondre les données contenues dans < patientAccountNumber > ;, qui se trouve dans < enterpriseClaim > ;, qui se trouve dans < bo: C837ClaimParent gt;     J'ai essayé toutes les valeurs auxquelles je peux penser sur la correspondance xsl: template et je ne peux pas correspondre à ce nœud, il ne le trouve pas ou correspond à l'ensemble du fichier xml, mon fichier xsl se présente comme suit:

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="2.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
    <html>
....
<div>
  <xsl:value-of select="C837ClaimParent/enterpriseClaim/patientAccountNumber" /></div>

Que dois-je spécifier sur mon modèle xsl: template et mon xsl: value-of?

De plus, pour ce même fichier, je vais faire correspondre d'autres valeurs, tout se trouve à l'intérieur du noeud principal < bo: C837ClaimParent, que dois-je utiliser pour pouvoir faire correspondre efficacement les noeuds de mon fichier? <

Était-ce utile?

La solution

Il semble qu'il manque une déclaration d'espace de noms pour votre préfixe bo. Cet espace de noms devra probablement apparaître dans votre solution, sauf si vous utilisez local-name()

modifier (après l'apparition de l'espace de nom!

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:bo="http://somelongpathHere/process/bo">
    <xsl:output method="xml" version="2.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
    <html>
....
<div>
  <xsl:value-of select="bo:C837ClaimParent/enterpriseClaim/patientAccountNumber" /></div>

Êtes-vous sûr que enterpriseClaim se trouve dans un espace de nom différent de C837ClaimParent?

Autres conseils

<xsl:stylesheet ... xmlns:bo="http://www.bo.org">
   ...
   <xsl:value-of select="/bo:C837ClaimParent/enterpriseClaim/patientAccountNumber" />
   ...
</xsl:stylesheet>

En général, mon conseil serait de lire sur les espaces de noms XML et XPath.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top