使用XSLT转换xml,以便循环节点获得唯一的名称
另外,这个例子是一个更大的xml的一部分,希望我澄清一下 我得到了xml文件的以下部分:使用XSLT转换xml,以便循环节点获得唯一的名称,xml,xslt,transformation,Xml,Xslt,Transformation,另外,这个例子是一个更大的xml的一部分,希望我澄清一下 我得到了xml文件的以下部分: <smartdocuments_root_node xmlns="http://com.logica.digimeente.zaaksysteem"> <Zaak> <ZaakNummer>21773</ZaakNummer> <ZaakID>21768</ZaakID> <Titel>Melding klein evene
<smartdocuments_root_node xmlns="http://com.logica.digimeente.zaaksysteem">
<Zaak>
<ZaakNummer>21773</ZaakNummer>
<ZaakID>21768</ZaakID>
<Titel>Melding klein evenement De grote Kompanjie Barbeque!</Titel>
<Kenmerken>
<Kenmerk>
<KenmerkType>Starttijd evemenent</KenmerkType>
<Omschrijving>Starttijdevemenent</Omschrijving>
<Waarde>15:00</Waarde>
</Kenmerk>
<Kenmerk>
<KenmerkType>evement namens</KenmerkType>
<Omschrijving>evement namens</Omschrijving>
<Waarde>De Kompanjie</Waarde>
</Kenmerk>
<Kenmerk>
<KenmerkType>Datum evenement</KenmerkType>
<Omschrijving>Datumevenement</Omschrijving>
<Waarde>20171101</Waarde>
</Kenmerk>
</Kenmerken>
</Zaak>
</smartdocuments_root_node>
21773
21768
融合klein grote Kompanjie烧烤晚会!
Starttijd evemenent
starttijdevement
15:00
除夕夜的名字
除夕夜的名字
德孔潘杰
基准平差
约会聚会
20171101
我想得到的是:
<smartdocuments_root_node xmlns="http://com.logica.digimeente.zaaksysteem">
<Zaak>
<ZaakNummer>21773</ZaakNummer>
<ZaakID>21768</ZaakID>
<Titel>Melding klein evenement De grote Kompanjie Barbeque!</Titel>
<Kenmerken>
<Kenmerk1>
<KenmerkType>Starttijd evemenent</KenmerkType>
<Omschrijving>Starttijdevemenent</Omschrijving>
<Waarde>15:00</Waarde>
</Kenmerk1>
<Kenmerk2>
<KenmerkType>evement namens</KenmerkType>
<Omschrijving>evement namens</Omschrijving>
<Waarde>De Kompanjie</Waarde>
</Kenmerk2>
<Kenmerk3>
<KenmerkType>Datum evenement</KenmerkType>
<Omschrijving>Datumevenement</Omschrijving>
<Waarde>20171101</Waarde>
</Kenmerk3>
</Kenmerken>
</Zaak>
</smartdocuments_root_node>
21773
21768
融合klein grote Kompanjie烧烤晚会!
Starttijd evemenent
starttijdevement
15:00
除夕夜的名字
除夕夜的名字
德孔潘杰
基准平差
约会聚会
20171101
或者使用
中的值重命名Kenmerk节点
有人能帮我吗?您可以从复制输入数据的
标识模板开始
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
然后必须使用别名访问这些元素
<xsl:template match="abc:Kenmerk">
下面是完整的XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:abc="http://com.logica.digimeente.zaaksysteem" >
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*" />
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<xsl:template match="abc:Kenmerk">
<xsl:variable name="newNodeName" select="concat(local-name(), position())" />
<xsl:element name="{$newNodeName}">
<xsl:apply-templates />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
输出
<smartdocuments_root_node xmlns="http://com.logica.digimeente.zaaksysteem">
<Zaak>
<ZaakNummer>21773</ZaakNummer>
<ZaakID>21768</ZaakID>
<Titel>Melding klein evenement De grote Kompanjie Barbeque!</Titel>
<Kenmerken>
<Kenmerk1>
<KenmerkType>Starttijd evemenent</KenmerkType>
<Omschrijving>Starttijdevemenent</Omschrijving>
<Waarde>15:00</Waarde>
</Kenmerk1>
<Kenmerk2>
<KenmerkType>evement namens</KenmerkType>
<Omschrijving>evement namens</Omschrijving>
<Waarde>De Kompanjie</Waarde>
</Kenmerk2>
<Kenmerk3>
<KenmerkType>Datum evenement</KenmerkType>
<Omschrijving>Datumevenement</Omschrijving>
<Waarde>20171101</Waarde>
</Kenmerk3>
</Kenmerken>
</Zaak>
</smartdocuments_root_node>
21773
21768
融合klein grote Kompanjie烧烤晚会!
Starttijd evemenent
starttijdevement
15:00
除夕夜的名字
除夕夜的名字
德孔潘杰
基准平差
约会聚会
20171101
您确定要这样做吗?这种XML很难使用(即使您将其调整为良好的格式):没有人会感谢您将其转换为这种形式。非常感谢,我添加了一些信息,并且正在努力使其正常工作。非常感谢您的帮助。更新后的输入XML现在包含一个名称空间,需要由XSLT处理以识别元素。请参阅更新的答案以及处理名称空间的说明。
<xsl:template match="abc:Kenmerk">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:abc="http://com.logica.digimeente.zaaksysteem" >
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*" />
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<xsl:template match="abc:Kenmerk">
<xsl:variable name="newNodeName" select="concat(local-name(), position())" />
<xsl:element name="{$newNodeName}">
<xsl:apply-templates />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
<smartdocuments_root_node xmlns="http://com.logica.digimeente.zaaksysteem">
<Zaak>
<ZaakNummer>21773</ZaakNummer>
<ZaakID>21768</ZaakID>
<Titel>Melding klein evenement De grote Kompanjie Barbeque!</Titel>
<Kenmerken>
<Kenmerk1>
<KenmerkType>Starttijd evemenent</KenmerkType>
<Omschrijving>Starttijdevemenent</Omschrijving>
<Waarde>15:00</Waarde>
</Kenmerk1>
<Kenmerk2>
<KenmerkType>evement namens</KenmerkType>
<Omschrijving>evement namens</Omschrijving>
<Waarde>De Kompanjie</Waarde>
</Kenmerk2>
<Kenmerk3>
<KenmerkType>Datum evenement</KenmerkType>
<Omschrijving>Datumevenement</Omschrijving>
<Waarde>20171101</Waarde>
</Kenmerk3>
</Kenmerken>
</Zaak>
</smartdocuments_root_node>