用于多个相同元素的变量元素名称的XSLT

时间:2016-03-01 17:59:28

标签: xml xslt

我有一段XML数据,其中包含多个人的信息,表示为 -

<phoneContact>
    <firstName>XXXXX</firstName>
    <middleName>Y</middleName>
    <lastName>ZZZZZ</lastName>
    <phone>1234567890</phone>
</phoneContact>
<phoneContact>
    <firstName>AAAA</firstName>
    <middleName>B</middleName>
    <lastName>CCCCC</lastName>
    <phone>9876543210</phone>
</phoneContact>

可能有任何人数。我想将其转换为 -

<phoneContact1>
    <firstName>XXXXX</firstName>
    <middleName>Y</middleName>
    <lastName>ZZZZZ</lastName>
    <phone>1234567890</phone>
</phoneContact1>
<phoneContact2>
    <firstName>AAAA</firstName>
    <middleName>B</middleName>
    <lastName>CCCCC</lastName>
    <phone>9876543210</phone>
</phoneContact2>

..等等。如何为每个创建多个不同元素名称的代码构造XSL?

感谢您对此提供任何帮助。

2 个答案:

答案 0 :(得分:1)

@Override public void onClick(View v) { switch(v.getId()) { case R.id.iVmg1: display.setImageResource(R.drawable.img1); break; case R.id.iVmg2: display.setImageResource(R.drawable.img2); break; case R.id.iVmg3: display.setImageResource(R.drawable.img3); break; case R.id.iVmg4: display.setImageResource(R.drawable.img4); break; case R.id.iVmg5: display.setImageResource(R.drawable.img5); break; case R.id.iVmg6: display.setImageResource(R.drawable.img6); break; case R.id.iVmg7: display.setImageResource(R.drawable.img7); break; case R.id.iVmg8: display.setImageResource(R.drawable.img8); break; case R.id.iVmg9: display.setImageResource(R.drawable.img9); break; case R.id.iVmg10: display.setImageResource(R.drawable.img10); break; // here default: break; } } 元素的循环内,您可以使用phoneContact和位置函数来创建编号为<xsl:element>的内容:

phoneContacts

答案 1 :(得分:0)

我们可以使用身份功能实现如下

<xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>
  <xsl:template match="/a/phoneContact">
<xsl:element name="phoneContact{position()}">

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

</xsl:element>
  </xsl:template>