2009-10-12 8 views
0

Mon problème est après l'exécution du fichier xlst je reçois la sortie dans le texte tout en une ligne, mais pas en xml selon les besoins. Mon fichier xml ainsi que le fichier xslt est le suivant.Après la transformation, obtenir la sortie dans le texte au lieu des nœuds xml

<root> 
    <Jobs Found="10" Returned="50"> 
    <Job ID="8000000" PositionID="600002"> 
    <Title>Development Manager</Title> 
    <Summary> 
    <![CDATA[ An experienced Development Manager with previous experience leading a small to mid-size team of developers in a Java/J2EE environment. A hands on role, you will be expected to manage and mentor a team of developers working on a mix of greenfield and maintenance projects.&#160;&#160; My client, a well known investment bank, requires an experienced Development Manager to join their core technology team. This t 
    ]]> 
    </Summary> 
    <DateActive Date="2009-10-06T19:36:43-05:00">10/6/2009</DateActive> 
    <DateExpires Date="2009-11-05T20:11:34-05:00">11/5/2009</DateExpires> 
    <DateUpdated Date="2009-10-06 20:12:00">10/6/2009</DateUpdated> 
    <Location> 
    <Country>xxxx</Country> 
    <State>xxx</State> 
    <City>xxx</City> 
    <PostalCode>xxx</PostalCode> 
    </Location> 
    <CompanyName>abc Technology</CompanyName> 
    <BuilderFields /> 
    <DisplayOptions /> 
    <AddressType>1234</AddressType> 
    </Job> 
     </Jobs> 
</root> 

XSLT stylesheet:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes" media-type="application/xml" 
       cdata-section-elements="Summary"/> 

    <!-- default: copy everything using the identity transform --> 
    <xsl:template match="@*|node()"> 
     <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <!-- override: for Location and Salary nodes, just process the children --> 
    <xsl:template match="Location|Salary"> 
     <xsl:apply-templates select="node()"/> 
    </xsl:template> 

    <!-- override: for selected elements, convert attributes to elements --> 
    <xsl:template match="Jobs/@*|Job/@*"> 
     <xsl:element name="{name()}"> 
     <xsl:value-of select="."/> 
     </xsl:element> 
    </xsl:template> 

    <!-- override: for selected elements, remove attributes --> 
    <xsl:template match="DateActive/@*|DateExpires/@*|DateUpdated/@*"/> 
</xsl:stylesheet> 

Courant de sortie dans le texte est le suivant:

492 50 83000003 61999998 leader sur le marché entreprise avec un nouveau rôle Position High Profile Avec responsibilty, visibilité & opportunité doit Avoir de solides compétences BA dans un environnement SDLC Une entreprise leader sur le marché Avec un rôle nouvellement créé Position de haut niveau avec responsabilité, visibilité & L'opportunité doit avoir de solides compétences de BA aiguisé dans un Environnement SDLC Mon client est un leader du marché qui continue d'aller de strengt 10/5/2009 11/4/2009 10/5/2009 Australie NSW Sydney 2000 Compétence Quest 90,000.00 120,000.00 Par an AUD 6

Cette sortie je veux en XML. les pls m'aident à obtenir une solution.

+0

Je vous conseille de lire le balisage de StackOverflow. Votre XML était invisible. –

+0

votre XML est invalide - le tag n'est jamais fermé ..... –

+0

@marc_s: Fixe. – Tomalak

Répondre

1

Avez-vous une ligne comme celle-ci en haut de votre fichier XSLT ??

<xsl:output method="xml" indent="yes"/> 

qui définit ce que le format de sortie est - "texte" est par défaut, "html" et "xml" sont les autres options.

Je ne sais pas ce que vous faites, mais quand je lance votre fichier XSLT sur le fichier XML exemple fourni, je reçois cela comme sortie:

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <Jobs><Found>10</Found><Returned>50</Returned> 
    <Job><ID>8000000</ID><PositionID>600002</PositionID> 
     <Title>Development Manager</Title> 
     <Summary> 
     An experienced Development Manager with previous experience leading a small to mid-size team of developers in a Java/J2EE environment. A hands on role, you will be expected to manage and mentor a team of developers working on a mix of greenfield and maintenance projects.&amp;#160;&amp;#160; My client, a well known investment bank, requires an experienced Development Manager to join their core technology team. This t 

     </Summary> 
     <DateActive>10/6/2009</DateActive> 
     <DateExpires>11/5/2009</DateExpires> 
     <DateUpdated>10/6/2009</DateUpdated> 

     <Country>xxxx</Country> 
     <State>xxx</State> 
     <City>xxx</City> 
     <PostalCode>xxx</PostalCode> 

     <CompanyName>abc Technology</CompanyName> 
     <BuilderFields /> 
     <DisplayOptions /> 
     <AddressType>1234</AddressType> 
    </Job> 
    </Jobs> 
</root> 

Marc

+0

Il est écrit en haut du fichier xslt, pls, trouver le contenu du fichier xslt dans la question lui-même –

0

Vous écrivez probablement sortez le texte interne d'un noeud xml au lieu d'appeler apply-templates dans l'un de vos noeuds. Je n'ai pas trouvé votre xsl attaché, donc ce n'est pas facile à deviner. Mais postez le xslt, et je vous le dirai.

+0

contenu du fichier xslt sont collés en dessous de la question pls, les trouver. –

1

Je suppose que vous regardez le résultat de la transformation dans un navigateur. La transformation elle-même fonctionne parfaitement, mais le navigateur affiche le texte brut du XML (car il attend les contenus HTML par défaut et ignore les balises qu'il ne reconnaît pas, affichant uniquement leur contenu textuel). Essayez media-type="text/xml" et voyez si cela fait une différence. Si ce n'est pas le cas, ne laissez pas l'affichage du navigateur vous confondre - il n'y a rien de mal avec le XSLT. Vous devez utiliser un autre processeur XSLT pour confirmer/déboguer le XSLT.

+0

Oui, monsieur, c'est vrai. Merci pour votre suggestion et réponse. –

Questions connexes