2017-05-10 27 views
1

次の出力が必要です。ここにxmlコードとotputもあります。だから私はちょうど私が与えたのと同じ出力をしたい。要素へのxsl変換属性

OUTPUT:

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

あなたはあなたの試みにとても近かったです。しかし、私は何だろうことは注意identity transformから始めて、必要なものより優先...

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

です:私は、子要素が含まれているactaのいずれかの子が削除されなければならないことを前提に作られました。これが安全な前提でない場合は、必要に応じてスタイルシートを更新できることをお知らせください。

+0

あなたは説明できます "<のxsl:テンプレートの一致="/ACTA/* [*]」 /> "してください。 @Abdullah - もちろん。 – Abdullah

+0

マッチのこの部分: 'acta/*'は 'acta'のすべての子要素にマッチします。述語 '[*]'は子要素をテストします。要素が 'acta'の子要素であり、それ自身の子要素も持つ場合、テンプレートはマッチします。例えば、 'assistants'は' acta'の子で 'assistant'の子を持っているのでマッチします。テンプレートは空であるため、何も出力されず、その要素に対して他の処理は行われません。 –

+0

ありがとうございました!!! – Abdullah

0

しかし、問題は、私は要素に属性のみを取得することで、私も <acta>でfollwingタグをしたい:<comunitat> <president> <vicepresident> <administrador>、YOUが出力に見ることができるように。そして、私は タグは必要ありません。

あなたは正確にあなたが望むどの要素、明示的にリストしていない理由を知っている場合 - 例えば:

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