2010-11-21 28 views
1

Voici un fichier xmléléments xml Position

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

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

Ce fichier XML est transformé par le xsl suivant:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/resume"> 
    <xsl:value-of select="/resume/contact-information/full-name"/> 
    <xsl:value-of select="/resume/contact-information/address_line_1"/> 
    <xsl:value-of select="/resume/contact-information/address_line_2"/> 
    <xsl:value-of select="/resume/contact-information/city"/> 
    <xsl:value-of select="/resume/contact-information/state"/> 
    <xsl:value-of select="/resume/contact-information/country"/> 
    <xsl:value-of select="/resume/contact-information/phone"/> 

    <xsl:for-each select="/resume/professional-experience-section/company"> 
     <!--for company name--> 
     <xsl:value-of select="name"/> 
     <xsl:value-of select="city"/>, <xsl:value-of select="state"/> 
     <xsl:value-of select="country"/> 
     <!--loop into job title--> 
     <xsl:for-each select="job-title"> 
      <!--for job title--> 
      <xsl:value-of select="title"/> 
      <!--for job start date and job end date--> 
      <xsl:value-of select="start-date"/> – <xsl:value-of 
       select="end-date"/> 
      <!--Loop into job description--> 
      <xsl:for-each select="job-description"> 
       <!--loop into each bullet point--> 
       <xsl:for-each select="bullet-point"> 
        <xsl:value-of select="statement"/> 
       </xsl:for-each> 
      </xsl:for-each> 
     </xsl:for-each> 
    </xsl:for-each> 


    <!--education section--> 
    <!--for education section's section name--> 
    <xsl:value-of select="/resume/education-section/section-name"/> 
    <!--loop into each institution name--> 
    <xsl:for-each select="/resume/education-section/institution"> 
     <!--for institution name --> 
     <xsl:value-of select="name"/> 
     <!--for institution city and state--> 
     <xsl:value-of select="city"/>, <xsl:value-of select="state"/> 
     <xsl:value-of select="country"/> 
     <!--for degree of a particular institution--> 
     <xsl:value-of select="degree"/>-<xsl:value-of select="expected-completion-date"/> 
     <xsl:for-each select="bullet-point"> 
      <xsl:for-each select="statement" > 
       <xsl:value-of select="."/> 
      </xsl:for-each> 
     </xsl:for-each> 
    </xsl:for-each> 


</xsl:template> 

La section professionnelle sera toujours rendue avant la section pédagogique. Je veux développer un mécanisme que les sections peuvent être changées dans xsl par exemple si je veux que l'information de la section éducative soit montrée d'abord au lieu de professionnelle en utilisant une sorte d'entrée et je n'ai pas à le faire manuellement. Comment dois-je changer le fichier xml ou xsl afin que je puisse changer l'ordre de chaque section au moment de l'exécution dans le xsl indiqué ci-dessus?

+0

Bonne question, +1. Voir ma réponse pour une solution rapide et complètement paramétrée. :) –

Répondre

0

Avoir deux feuilles de style xsl séparées; l'un comme ci-dessus, et l'autre avec le

<xsl:value-of select="/resume/education-section/section-name"/> 

boucle en avant de l'expérience professionnelle.

Lors de l'exécution, choisissez la feuille de style que vous souhaitez appeler.

C'est vraiment pas censé être une réponse intelligente aleck, je pense sincèrement que c'est la meilleure façon de parvenir à ce que le questionneur veut

+0

J'ai aussi pensé à cela pour avoir plusieurs feuilles de style mais supposons que si j'ai plus de 2 sections combien de combinaisons devrais-je faire? –

0

La transformation suivante utilise un paramètre externe (et peut facilement être ajusté à lire un autre document) les sections désirées et leur ordre souhaité:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

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

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

<xsl:template match="/resume"> 

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

<xsl:template match="contact-information"> 
    <xsl:value-of select="full-name"/> 
    <xsl:value-of select="address_line_1"/> 
    <xsl:value-of select="address_line_2"/> 
    <xsl:value-of select="city"/> 
    <xsl:value-of select="state"/> 
    <xsl:value-of select="country"/> 
    <xsl:value-of select="phone"/> 
</xsl:template> 

<xsl:template match="company"> 
    <!--for company name--> 
    <xsl:value-of select="name"/> 
    <xsl:value-of select="city"/>, <xsl:value-of select="state"/> 
    <xsl:value-of select="country"/> 
    <!--loop into job title--> 
    <xsl:for-each select="job-title"> 
    <!--for job title--> 
    <xsl:value-of select="title"/> 
     <!--for job start date and job end date--> 
     <xsl:value-of select="start-date"/> – <xsl:value-of 
      select="end-date"/> 
     <!--Loop into job description--> 
     <xsl:for-each select="job-description"> 
      <!--loop into each bullet point--> 
      <xsl:for-each select="bullet-point"> 
      <xsl:value-of select="statement"/> 
      </xsl:for-each> 
     </xsl:for-each> 
    </xsl:for-each> 
</xsl:template> 

<xsl:template match="institution"> 
    <!--for institution name --> 
    <xsl:value-of select="name"/> 
    <!--for institution city and state--> 
    <xsl:value-of select="city"/>, <xsl:value-of select="state"/> 
    <xsl:value-of select="country"/> 
    <!--for degree of a particular institution--> 
    <xsl:value-of select="degree"/>-<xsl:value-of select="expected-completion-date"/> 
    <xsl:for-each select="bullet-point"> 
    <xsl:for-each select="statement" > 
     <xsl:value-of select="."/> 
    </xsl:for-each> 
    </xsl:for-each> 
</xsl:template> 

<xsl:template match="education-section"> 
    <!--education section--> 
    <!--for education section's section name--> 
    <xsl:value-of select="section-name"/> 
    <!--loop into each institution name--> 
    <xsl:apply-templates select="institution"/> 
</xsl:template> 
</xsl:stylesheet> 

Prenez note:

Je n'ai pas corrigé tout traitement spécifique fourni - il suffit de le grouper en modèles et de fournir le mécanisme de commande. Il appartient à l'OP (poster original) de décider comment finaliser la présentation.

En particulier, la majeure partie du code peut encore être affinée en le regroupant en modèles, ce qui permettra de découpler le code, de le simplifier et de dectreasing les dépendances et les informations codées en dur.

1

Cette feuille de style:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:param name="pOrder" select="concat('contact-information|', 
              'professional-experience-section|', 
              'education-section')"/> 
    <xsl:template match="institution/completed| 
         institution/end-date| 
         institution/ongoing| 
         education-section/enable| 
         professional-experience-section 
          /*[not(self::company)]| 
         custom-section| 
         additional-skills-section| 
         contact-information/zip| 
         contact-information/email| 
         job-title/ongoing" priority="1"/> 
    <xsl:template match="text()"> 
     <xsl:value-of select="concat(.,'&#xa;')"/> 
    </xsl:template> 
    <xsl:template match="resume"> 
     <xsl:apply-templates> 
      <xsl:sort select="string-length(
           substring-before($pOrder, 
                name()))"/> 
     </xsl:apply-templates> 
    </xsl:template> 
    <xsl:template match="institution/city|company/city"> 
     <xsl:value-of select="concat(.,',')"/> 
    </xsl:template> 
    <xsl:template match="job-title/start-date"> 
     <xsl:value-of select="concat(.,' - ')"/> 
    </xsl:template> 
    <xsl:template match="institution/degree"> 
     <xsl:value-of select="concat(.,'-')"/> 
    </xsl:template> 
</xsl:stylesheet> 

Avec cette entrée correctement ainsi formé (resume de l'élément racine), sortie:

Peter John 
some place 
some place2 
some city 
some state 
some country 
2121314144 
Computer Sciences Corporation 
New York,NY 
United States 
Senior Software Engineer 
Aug 1996 - May 2010 
C#, Visual Basic, Asp.net 
Inspect completed work to ensure conformance to specifications, standards, and contract requirements. 
Another Work Description. 
Acme 
Silver Spring,MD 
United States 
Manager 
Jul 2010 - present 
Report to management regarding the finances of establishment. 
Prepare, examine, or analyze accounting records, financial statements, or other financial reports to assess accuracy, completeness, and conformance to reporting and procedural standards. 
Prepare, examine, or analyze accounting records, financial statements, or other financial reports to assess accuracy, completeness, and conformance to reporting and procedural standards. 
Analyst 
Jul 2001 - Jan 2010 
Study and rehearse roles from scripts in order to interpret, learn and memorize lines, stunts, and cues as directed. 
Work closely with directors, other actors, and playwrights to find the interpretation most suited to the role. 
EDUCATION 
true 
Allston Community College 
Akron,MA 
United States 
Bachelor of Art in Marketing Candidate-Jan 2020 
detail of what i did at the allston community college 
Boston College 
Boston,MA 
United States 
Bachelor of Science in Information Systems-Lorem Ipsum 
Testing 
Testing,PA 
United States 
Completed coursework towards Bachelor of Art in Marketing-Lorem Ipsum 
Testing 
Testing,PA 
United States 
Completed coursework towards Bachelor of Art in Marketing-Lorem Ipsum 

Remarque: $pOrder param est une séquence avec un ordre relatif à traiter resume enfants.