2010-11-18 5 views
1

Ich habe eine XML-DateiXML Sortierung XSL

<?xml version="1.0" encoding="UTF-8"?> 
<data> 

<contact-information> 

    <full-name>Peter John</full-name> 
    <address_line_1>some place</address_line_1> 
    <address_line_2>some place2</address_line_2> 
    <city>some city</city> 
    <state>some state</state> 
    <zip>54000</zip> 
    <country>some country</country> 
    <phone>2121314144</phone> 
    <email>[email protected]</email> 

</contact-information> 

<professional-experience-section> 
    <section-name>PROFESSIONAL EXPERIENCE</section-name> 
    <enabled>true</enabled> 
    <company> 
    <name>Computer Sciences Corporation</name> 
    <city>New York</city> 
    <state>NY</state> 
    <country>United States</country> 
    <job-title> 
     <title>Senior Software Engineer</title> 
     <start-date>Aug 1996</start-date> 
     <end-date>May 2010</end-date> 
     <ongoing>false</ongoing> 
     <job-description> 
     <bullet-point> 
      <statement>C#, Visual Basic, Asp.net</statement> 
     </bullet-point> 
     <bullet-point> 
      <statement>Inspect completed work to ensure conformance to specifications, standards, and contract requirements.</statement> 
     </bullet-point> 
     <bullet-point> 
      <statement>Another Work Description.</statement> 
     </bullet-point> 
     </job-description> 
    </job-title> 
    </company> 
    <company> 
    <name>Acme</name> 
    <city>Silver Spring</city> 
    <state>MD</state> 
    <country>United States</country> 
    <job-title> 
     <title>Manager</title> 
     <start-date>Jul 2010</start-date> 
     <end-date>present</end-date> 
     <ongoing>true</ongoing> 
     <job-description> 
     <bullet-point> 
      <statement>Report to management regarding the finances of establishment.</statement> 
     </bullet-point> 
     <bullet-point> 
      <statement>Prepare, examine, or analyze accounting records, financial statements, or other financial reports to assess accuracy, completeness, and conformance to reporting and procedural standards.</statement> 
     </bullet-point> 
     <bullet-point> 
      <statement>Prepare, examine, or analyze accounting records, financial statements, or other financial reports to assess accuracy, completeness, and conformance to reporting and procedural standards.</statement> 
     </bullet-point> 
     </job-description> 
    </job-title> 

    <job-title> 
     <title>Analyst</title> 
     <start-date>Jul 2001</start-date> 
     <end-date>Jan 2010</end-date> 
     <ongoing>false</ongoing> 
     <job-description> 
     <bullet-point> 
      <statement>Study and rehearse roles from scripts in order to interpret, learn and memorize lines, stunts, and cues as directed.</statement> 
     </bullet-point> 
     <bullet-point> 
      <statement>Work closely with directors, other actors, and playwrights to find the interpretation most suited to the role.</statement> 
     </bullet-point> 
     </job-description> 
    </job-title> 

    </company> 
</professional-experience-section> 


<education-section> 
    <section-name>EDUCATION</section-name> 
    <enabled>true</enabled> 
    <institution> 
    <name>Allston Community College</name> 
    <city>Akron</city> 
    <state>MA</state> 
    <country>United States</country> 
    <degree>Bachelor of Art in Marketing Candidate</degree> 
    <end-date>Jan 2020</end-date> 
    <ongoing>true</ongoing> 
    <expected-completion-date>Jan 2020</expected-completion-date> 
    <completed></completed> 
    <bullet-point> 
     <statement>detail of what i did at the allston community college</statement> 
    </bullet-point> 
    </institution> 
    <institution> 
    <name>Boston College</name> 
    <city>Boston</city> 
    <state>MA</state> 
    <country>United States</country> 
    <degree>Bachelor of Science in Information Systems</degree> 
    <end-date>Jul 1990</end-date> 
    <ongoing>false</ongoing> 
    <expected-completion-date></expected-completion-date> 
    <completed>true</completed> 
    <bullet-point> 
     <statement>Lorem Ipsum</statement> 
    </bullet-point> 
    </institution> 
    <institution> 
    <name>Testing</name> 
    <city>Testing</city> 
    <state>PA</state> 
    <country>United States</country> 
    <degree>Completed coursework towards Bachelor of Art in Marketing</degree> 
    <end-date>Mar 1963</end-date> 
    <ongoing>false</ongoing> 
    <expected-completion-date></expected-completion-date> 
    <completed>false</completed> 
    <bullet-point> 
     <statement>Lorem Ipsum</statement> 
    </bullet-point> 
    </institution> 
    <institution> 
    <name>Testing</name> 
    <city>Testing</city> 
    <state>PA</state> 
    <country>United States</country> 
    <degree>Completed coursework towards Bachelor of Art in Marketing</degree> 
    <end-date>Mar 1963</end-date> 
    <ongoing>false</ongoing> 
    <expected-completion-date></expected-completion-date> 
    <completed>false</completed> 
    <bullet-point> 
     <statement>Lorem Ipsum</statement> 
    </bullet-point> 
    </institution> 
</education-section> 
<additional-skills-section> 
    <section-name>ADDITIONAL SKILLS</section-name> 
    <enabled>true</enabled> 
    <layout>1 Column</layout> 
    <bullet-point> 
    <statement>Additional Skills 1</statement> 
    </bullet-point> 
    </additional-skills-section> 
<custom-section> 
    <section-name>PUBLICATIONS</section-name> 
    <layout>2</layout> 
    <bullet-point> 
    <statement>test</statement> 
    </bullet-point> 
</custom-section> 

</data> 

Wie Sie diese Datei enthält verschiedene Abschnitte sehen können, Kontakt-Informationen, professionell und Bildung?

Ich möchte diese Abschnitte mit Xsl sortieren.

Durch die Sortierung meine ich, dass ich möchte, dass der professionelle Abschnitt zuerst im transformierten xml erscheint, wenn xsl-Transformation angewendet wird.

Wie kann ich das in xsl tun? Wie werden XML-Elemente analysiert? Bedeutung Priorität?

+0

erzählen Sie uns, wie Sie sie jetzt analysieren, damit wir von dort gehen können. –

+0

Gute Frage, +1. Sehen Sie meine Antwort für eine vollständige und kurze Lösung, die vollständig anpassbar und parametrierbar ist. –

+0

scheint du hast meine Antwort nicht angesehen? –

Antwort

1

diese Transformation:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:param name="pRanks"> 
    <professional-experience-section r="1"/> 
    <education-section r="2"/> 
    <additional-skills-section r="3"/> 
    <custom-section r="4"/> 
    <contact-information r="5"/> 
</xsl:param> 

<xsl:variable name="vRanks" select= 
    "document('')/*/xsl:param[@name='pRanks']"/> 

<xsl:template match="node()|@*"> 
    <xsl:copy> 
    <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="/*"> 
    <xsl:apply-templates select="*"> 
    <xsl:sort select="$vRanks/*[name()=name(current())]/@r" 
      data-type="number"/> 
    </xsl:apply-templates> 
</xsl:template> 
</xsl:stylesheet> 

wenn auf dem mitgelieferten XML-Dokument angewandt wird, erzeugt das Sortierergebnis als pro der Rangliste im pRanks Parameter angegeben:

beachten Sie
<professional-experience-section> 
    <section-name>PROFESSIONAL EXPERIENCE</section-name> 
    <enabled>true</enabled> 
    <company> 
     <name>Computer Sciences Corporation</name> 
     <city>New York</city> 
     <state>NY</state> 
     <country>United States</country> 
     <job-title> 
     <title>Senior Software Engineer</title> 
     <start-date>Aug 1996</start-date> 
     <end-date>May 2010</end-date> 
     <ongoing>false</ongoing> 
     <job-description> 
      <bullet-point> 
       <statement>C#, Visual Basic, Asp.net</statement> 
      </bullet-point> 
      <bullet-point> 
       <statement>Inspect completed work to ensure conformance to specifications, standards, and contract requirements.</statement> 
      </bullet-point> 
      <bullet-point> 
       <statement>Another Work Description.</statement> 
      </bullet-point> 
     </job-description> 
     </job-title> 
    </company> 
    <company> 
     <name>Acme</name> 
     <city>Silver Spring</city> 
     <state>MD</state> 
     <country>United States</country> 
     <job-title> 
     <title>Manager</title> 
     <start-date>Jul 2010</start-date> 
     <end-date>present</end-date> 
     <ongoing>true</ongoing> 
     <job-description> 
      <bullet-point> 
       <statement>Report to management regarding the finances of establishment.</statement> 
      </bullet-point> 
      <bullet-point> 
       <statement>Prepare, examine, or analyze accounting records, financial statements, or other financial reports to assess accuracy, completeness, and conformance to reporting and procedural standards.</statement> 
      </bullet-point> 
      <bullet-point> 
       <statement>Prepare, examine, or analyze accounting records, financial statements, or other financial reports to assess accuracy, completeness, and conformance to reporting and procedural standards.</statement> 
      </bullet-point> 
     </job-description> 
     </job-title> 
     <job-title> 
     <title>Analyst</title> 
     <start-date>Jul 2001</start-date> 
     <end-date>Jan 2010</end-date> 
     <ongoing>false</ongoing> 
     <job-description> 
      <bullet-point> 
       <statement>Study and rehearse roles from scripts in order to interpret, learn and memorize lines, stunts, and cues as directed.</statement> 
      </bullet-point> 
      <bullet-point> 
       <statement>Work closely with directors, other actors, and playwrights to find the interpretation most suited to the role.</statement> 
      </bullet-point> 
     </job-description> 
     </job-title> 
    </company> 
</professional-experience-section> 
<education-section> 
    <section-name>EDUCATION</section-name> 
    <enabled>true</enabled> 
    <institution> 
     <name>Allston Community College</name> 
     <city>Akron</city> 
     <state>MA</state> 
     <country>United States</country> 
     <degree>Bachelor of Art in Marketing Candidate</degree> 
     <end-date>Jan 2020</end-date> 
     <ongoing>true</ongoing> 
     <expected-completion-date>Jan 2020</expected-completion-date> 
     <completed/> 
     <bullet-point> 
     <statement>detail of what i did at the allston community college</statement> 
     </bullet-point> 
    </institution> 
    <institution> 
     <name>Boston College</name> 
     <city>Boston</city> 
     <state>MA</state> 
     <country>United States</country> 
     <degree>Bachelor of Science in Information Systems</degree> 
     <end-date>Jul 1990</end-date> 
     <ongoing>false</ongoing> 
     <expected-completion-date/> 
     <completed>true</completed> 
     <bullet-point> 
     <statement>Lorem Ipsum</statement> 
     </bullet-point> 
    </institution> 
    <institution> 
     <name>Testing</name> 
     <city>Testing</city> 
     <state>PA</state> 
     <country>United States</country> 
     <degree>Completed coursework towards Bachelor of Art in Marketing</degree> 
     <end-date>Mar 1963</end-date> 
     <ongoing>false</ongoing> 
     <expected-completion-date/> 
     <completed>false</completed> 
     <bullet-point> 
     <statement>Lorem Ipsum</statement> 
     </bullet-point> 
    </institution> 
    <institution> 
     <name>Testing</name> 
     <city>Testing</city> 
     <state>PA</state> 
     <country>United States</country> 
     <degree>Completed coursework towards Bachelor of Art in Marketing</degree> 
     <end-date>Mar 1963</end-date> 
     <ongoing>false</ongoing> 
     <expected-completion-date/> 
     <completed>false</completed> 
     <bullet-point> 
     <statement>Lorem Ipsum</statement> 
     </bullet-point> 
    </institution> 
</education-section> 
<additional-skills-section> 
    <section-name>ADDITIONAL SKILLS</section-name> 
    <enabled>true</enabled> 
    <layout>1 Column</layout> 
    <bullet-point> 
     <statement>Additional Skills 1</statement> 
    </bullet-point> 
</additional-skills-section> 
<custom-section> 
    <section-name>PUBLICATIONS</section-name> 
    <layout>2</layout> 
    <bullet-point> 
     <statement>test</statement> 
    </bullet-point> 
</custom-section> 
<contact-information> 
    <full-name>Peter John</full-name> 
    <address_line_1>some place</address_line_1> 
    <address_line_2>some place2</address_line_2> 
    <city>some city</city> 
    <state>some state</state> 
    <zip>54000</zip> 
    <country>some country</country> 
    <phone>2121314144</phone> 
    <email>[email protected]</email> 
</contact-information> 

: Der $pRanks Parameter extern angegeben werden kann, so dass die Transformation wird nie bearbeitet werden müssen.

0

Nun, ohne ein Root-Element ist Ihr Markup kein wohlgeformtes XML-Dokument. Und wenn Sie möchten, dass wir mit XSLT helfen, müssen wir auch wissen, was das Wurzelelement ist. Angenommen, Sie haben ein Element „Daten“ genannt, diese Elemente Umwickeln Sie geschrieben haben, und Sie wollen, dass sie mit XSLT nachbestellen 1.0 dann

<xsl:template match="data"> 
    <xsl:copy> 
    <xsl:copy-of select="professional-experience-section"/> 
    <xsl:copy-of select="*[not(self::professional-experience-section)]"/> 
    </xsl:copy> 
</xsl:template> 
+0

Mein Stammelement ist das Datenelement und was macht Ihr Code? –

1

Dieses Sheet tun litle die Identität Regel ändern:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="node()|@*"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*"/> 
      <xsl:apply-templates select="node()"> 
       <xsl:sort select="not(self::professional-experience-section)"/> 
      </xsl:apply-templates> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 
+0

dies sortiert nur die professionelle Erfahrung Abschnitt, was, wenn ich basierend auf einem Abschnitt sortieren möchten –

+0

@Sultan Saadat: Hast du getestet? Das macht genau das, wonach du fragst: "Durch die Sortierung bedeute ich, dass der professionelle Bereich zuerst im transformierten XML erscheinen soll." –

+0

Dies hat auch den Vorteil, dass Sie die Identitätsregel mit anderen Regeln überschreiben können, so dass die Transformation so funktioniert, als wäre die Eingabequelle in dieser Reihenfolge gewesen (außer natürlich für "Daten"). –