2017-01-30 15 views
0

複数の子供に対して同じIDを設定する方法を探しています。私は、XSLでこれをやった:私はXML 複数の同一要素のIDを設定する方法

<refs> 
 
    <ref alias=""> 
 
     <fields> 
 
      <field name="something" value="something" /> 
 
      <field name="something" value="something" /> 
 
     </fields> 
 
    </refs> 
 
    <ref> 
 
     <fields> 
 
       <field name="something" value="something"/> 
 
       <field name="something" value="something"/> 
 

 
     </fields> 
 
</ref> 
 
</refs>

でそれを得た

<xsl:template match="ref"> 
 
    <fields> 
 
    <field name="" value=""/> 
 
    </fields> 
 
</xsl:template>

と私は、この最終的

<refs> 
 
    <ref alias=""> 
 
     <fields> 
 
      <field name="something" value="something" index="0"/> 
 
      <field name="something" value="something" index="0"/> 
 
     </fields> 
 
     </refs> 
 
      <ref> 
 
     <fields> 
 
       <field name="something" value="something" index="1"/> 
 
       <field name="something" value="something" index="1"/> 
 
     </fields> 
 
    </ref> 
 
</refs>
をしたいです

どうすればこの問題を解決できますか?

答えて

0

私はそれをこのようにします:

XSLT 1.0

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

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

<xsl:template match="field"> 
    <xsl:copy> 
     <xsl:copy-of select="@*"/> 
     <xsl:attribute name="index"> 
      <xsl:value-of select="generate-id(..)" /> 
     </xsl:attribute> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 

これは、親fieldsの各field一意のIDを割り当てます。 idの正確な形式はプロセッサによって異なります。

+0

私はXSL処理に私を設定指定するのを忘れて、テンプレートの試合はその後、使用することはできません。■ – alexis

+0

は、私はあなたが何を意味するかわかりません。 –

+0

私のような私のXMLを作っます。 \t \t \t \t alexis

関連する問題