在使用XSLT处理XML文档时,如果遇到ID重复的问题,可以通过XSLT的转换来更改这些重复的ID。以下是解决这个问题的步骤和相关概念:
假设我们有一个XML文档,其中包含重复的ID:
<root>
<item id="1">Item 1</item>
<item id="2">Item 2</item>
<item id="1">Duplicate Item 1</item>
</root>
我们可以使用XSLT来更改这些重复的ID。以下是一个示例XSLT样式表:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<!-- Identity template to copy elements by default -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- Template to handle duplicate IDs -->
<xsl:template match="item">
<xsl:variable name="new-id" select="concat(@id, '_', position())"/>
<item id="{$new-id}">
<xsl:apply-templates select="@*|node()"/>
</item>
</xsl:template>
</xsl:stylesheet>
<item>
元素,生成一个新的ID,格式为原ID_位置
,以确保ID的唯一性。应用上述XSLT样式表后,XML文档将变为:
<root>
<item id="1">Item 1</item>
<item id="2">Item 2</item>
<item id="1_3">Duplicate Item 1</item>
</root>
通过这种方式,你可以有效地处理XML文档中的重复ID问题。
领取专属 10元无门槛券
手把手带您无忧上云