2017-05-10 2 views
1

그냥 다음 출력을 원합니다. 다음은 xml 코드와 otput입니다. 그래서 나는 단지 내가 준 동일한 결과를 원한다.xsl 속성을 요소로 변환

출력 :

<?xml version="1.0"?> 
<!-- Demostració de conversió d'atributs a elements --> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes" /> 

    <xsl:strip-space elements="*" /> 

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

    <xsl:template match="acta/@*"> 
     <xsl:element name="{name()}"> 
      <xsl:value-of select="."/> 
     </xsl:element> 
    </xsl:template> 
    <xsl:template match="text()" /> 

</xsl:stylesheet> 

하지만 난 요소 만 속성을 얻을 수 있다는 문제가, 나 또한 원하는 :이 XSL을 시도

<?xml version="1.0" encoding="UTF-8" ?> 
<?xml-stylesheet type="text/css" href="actaampliada.css" ?> 
<!-- Aquest document ha estat generat amb el prodigiós programa ManualTypemàtic v0.1 --> 
<acta sessió="68" data="2016-11-21" inici="20:00:00" durada="pT3H45M" > 
    <comunitat> Junta de propietaris del Carrer de la Selva de Mar, 211 </comunita                      t> 
    <president>Sr. Lluís Bendito i Sigüenza</president> 
    <vicepresident>Sra. Ramona González Remolona</vicepresident> 
    <administrador>Sr. Romualdo Malandrín Segura</administrador> 
    <assistents> 
     <assistent> 
      <pis>1er 1ra</pis> 
      <veí>Sra. Josefa Ramos Granados</veí> 
      <veí>Sra. Jamilda Altramuz Izaguirre</veí> 
     </assistent> 
     <assistent> 
      <pis>1er 2na</pis> 
      <veí>Sr. Vicent Carallot i Gripau</veí> 
     </assistent> 
     <assistent> 
      <pis>2on 1ra</pis> 
      <veí rol="president">Sr. Lluís Benito i Sigüenza</veí> 
     </assistent> 
     <assistent> 
      <pis>2on 2na</pis> 
      <veí>Sr. Carles Valdaura Ronyós</veí> 
      <veí rol="vicepresident">Sra. Ramona González Remolona</veí> 
      <veí>Sta. Ramona Valdaura González</veí> 
     </assistent> 
     <assistent> 
      <pis>4rt 1ra</pis> 
      <veí>Sr. Lam Kam Chuen</veí> 
     </assistent> 
    </assistents> 
    <noassistents> 
     <pis>3er 2na</pis> 
     <pis>3er 1ra</pis> 
     <pis>4rt 2na</pis> 
    </noassistents> 
    <ordredeldia> 
     <punt id="1">Lectura i aprovació, si escau, de l'acta anterior</punt> 
     <punt id="2">Estat de pagament de les quotes del propietari del pis 4rt 2n                      a.</punt> 
     <punt id="3">Torn obert de paraula</punt> 
     <punt id="4">Horari de reg i utilització dels espais comuns per part del p                      ropietari del pis 4rt 2na.</punt> 
    </ordredeldia> 
    <desenvolupament> 
     <entrada punt="1"> 
      <paragraf>La sra. vicepresidenta llegeix l’acta de la reunió.</paragra                      f> 
     </entrada> 
     <entrada punt="2"> 
      <paragraf>El sr. president passa la paraula al Sr. administrador qui d                      escriu que el pis 4rt 2na no està al corrent de pagament de les quotes de la comun                      itat. Indica que el propietari en qüestió va deixar de pagar fa cinc mesos i deu a                      la comunitat 376.25€.</paragraf> 
      <paragraf>El sr. Vicent Carallot exposa els problemes que està tenint                      amb el reg de les plantes a qualsevol hora i de manera desproporcionada, per part                      del propietari del pis en qüestió i també que deixa una pudor inaguantable a la po                      rteria quan baixa les escombreries. Altres veïns s’hi afegeixen a la discussió.</p                      aragraf> 
      <paragraf>El sr. Chin Pun indica que l’ascensor no arriba al seu pis o                      bé que s’ha comprat un gos verd (cap de la junta ni el Sr. administrador vam pode                      r esverinar-ho exàctament). En tot cas, se li indica que aquest tema havia de ser                      tractat al torn obert de paraula.</paragraf> 
     </entrada> 
     <entrada punt="4"> 
      <paragraf>Queda tractat amb el punt 2.</paragraf> 
     </entrada> 
     <entrada punt="3"> 
      <paragraf>No queda temps per desenvolupar aquest punt. El sr. Cho Chin                      protesta i la junta acorda oferir-li una oportunitat per a exposar el seu tema en                      una reunió propera.</paragraf> 
     </entrada> 
    </desenvolupament> 
    <acords> 
     <acord id="1">S'acorda abordar el tema del Sr. Chin Pun en la propera reunió                      </acord> 
    </acords> 
    <temespendents> 
     <tema id="1"> Estudi del problema del veí del 4rt 1ra </tema> 
    </temespendents> 
</acta> 

<?xml version="1.0" encoding="UTF-8" ?> 
<acta> 
    <sessió>68</sessió> 
    <data>2016-11-21</data> 
    <inici>20:00:00</inici> 
    <durada>pT3H45M</durada> 
    <comunitat> Junta de propietaris del Carrer de la Selva de Mar, 211 </comunitat> 
    <president>Sr. Lluís Bendito i Sigüenza</president> 
    <vicepresident>Sra. Ramona González Remolona</vicepresident> 
    <administrador>Sr. Romualdo Malandrín Segura</administrador> 
</acta> 

XML <acta>의 태그 : <comunitat> <president> <vicepresident> <administrador>, 출력에 표시됩니다. 그리고 나는 더 이상 태그를 원한다. 미리 감사드립니다!

답변

1

시도가 거의 끝났습니다. 그러나, 내가 무엇을 할 것입니다 것은

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

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

    <!--Convert attributes of acta to elements.--> 
    <xsl:template match="acta/@*"> 
    <xsl:element name="{name()}"> 
     <xsl:value-of select="."/> 
    </xsl:element> 
    </xsl:template> 

    <!--Remove children of acta when they also contain child elements.--> 
    <xsl:template match="acta/*[*]"/> 

</xsl:stylesheet> 

주 ... identity transform 시작하고 필요한 무엇보다 우선이다 : 나는 자식 요소를 포함 acta의 자식이 제거되어야한다고 가정했다. 이것이 안전한 가정이 아니라면 필요한 경우 스타일 시트를 업데이트 할 수 있음을 알려주십시오. 귀하가 출력에서 ​​볼 수 있듯이, <comunitat> <president> <vicepresident> <administrador> :

+0

당신이 설명 할 수있는 " "제발? – Abdullah

+0

@Abdullah - 물론입니다. 일치 부분 :'acta/*'는'acta'의 모든 자식 요소와 일치합니다. 술어'[*]'는 하위 요소를 테스트합니다. 따라서 요소가'acta'의 자식이고 자체 자식 요소가있는 경우 템플릿은 일치합니다. 예를 들어, 'assistants'는 'acta'의 자식이고 'assistant'자식이 있기 때문에 일치합니다. 템플릿이 비어 있기 때문에 아무 것도 출력되지 않고 해당 요소에 대해 다른 처리가 수행되지 않습니다. –

+0

고마워요 !!! – Abdullah

0

는하지만 문제는 내가 요소 속성 만, 나는 또한 가 <acta>에서 follwing을 태그 할 수 있다는 것입니다. 그리고 나는 태그를 더 이상 원하지 않습니다.

정확히 당신이 원하는 요소를 명시 적으로 나열하지 이유를 알고 있다면 - 예를 들면 :

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

<xsl:template match="/acta"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*"/> 
     <xsl:copy-of select="comunitat | president | vicepresident | administrador"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="@*"> 
    <xsl:element name="{name()}"> 
     <xsl:value-of select="."/> 
    </xsl:element> 
</xsl:template> 

</xsl:stylesheet>