【发布时间】:2011-06-01 14:07:28
【问题描述】:
我有一个 xml 文件并使用 xslt 转换,我需要生成以下 xml 文件。
<root>
<Entities>
<Classifications>
<classificatie UniqueID="1">
<Name>standaard1</Name>
</classificatie>
<classificatie UniqueID="2">
<Name>bdi</Name>
</classificatie>
<classificatie UniqueID="3">
<Name>lokaal1</Name>
</classificatie>
</Classifications>
<Categories>
<categorie UniqueID="1" id="D0001" super-id="" volgnummer="">
<Name>Beleid vast-/opstellen en Bestuur</Name>
</categorie>
<categorie UniqueID="2" id="D0002" super-id="" volgnummer="">
<Name>Beleid uitvoeren</Name>
</categorie>
<categorie UniqueID="3" id="D0003" super-id="" volgnummer="">
<Name>Beheer en Handhaving</Name>
</categorie>
</Categories>
</Entities>
<Relations>
<Classification_Category ClassficationID="1" CategoryID="2" />
</Relations>
</root>
使用 xslt 转换,我能够生成实体节点。要生成关系节点,我需要生成 UniqueID。 为实体节点中的元素生成的 uniqueID 不存在于原始 xml 文件中,而是使用 XSL 文件生成的。 使用 XSLT 代码生成唯一 id ..
<xsl:template match="classificatie">
<xsl:variable name="vNum1">
<xsl:number level="any" count="classificatie"/>
</xsl:variable>
<classificatie>
<xsl:attribute name="UniqueID">
<xsl:value-of select="$vNum1"/>
</xsl:attribute>
<Name>
<xsl:value-of select="@id"/>
</Name>
</classificatie>
</xsl:template>
对于类别,XLST 模板也类似于分类模板。在原始 XML 文件中,categorie 节点嵌套在分类元素下。
在新生成的 XML 中,我需要将其分隔为实体元素下的元素。而这些之间的关系需要在“Relations”元素下建立。
我能够将节点生成为实体下的单独节点。而且我无法使用新生成的 id 在“Relations”节点下生成元素。
简而言之:用非嵌套元素转换父子关系(嵌套关系)。 -拉杰什
源 XML 和 xslt 文件压缩在以下位置 Zip Files
从链接更新:减少输入样本
<root>
<classificaties>
<classificatie id="standard">
<categorieen>
<categorie id="D0001" super-id="">Category1</categorie>
<categorie id="D0002" super-id="">Category2</categorie>
<categorie id="D0003" super-id="">Category3</categorie>
<categorie id="D0004" super-id="D0001">Category1.1</categorie>
<categorie id="D0005" super-id="D0001">Category1.2</categorie>
<categorie id="D0007" super-id="D0002">Category2.1</categorie>
<categorie id="D0021" super-id="D0003">Category3.1</categorie>
<categorie id="D0025" super-id="D0002">Category2.2</categorie>
</categorieen>
</classificatie>
<classificatie id="bdi">
<categorieen>
<categorie id="MLF0000002"
super-id="" volgnummer="1">Test 1</categorie>
<categorie id="MLF0000003"
super-id="" volgnummer="2">Test 2</categorie>
<categorie id="MLF0000017"
super-id="MLF0000003" volgnummer="1">Test 17</categorie>
<categorie id="MLF0000020"
super-id="MLF0000002" volgnummer="2">Test 20</categorie>
<categorie id="MLF0000021"
super-id="MLF0000002" volgnummer="3">Test 21</categorie>
<categorie id="MLF0000025"
super-id="MLF0000003" volgnummer="2">Test 25</categorie>
<categorie id="MLF0000027"
super-id="MLF0000003" volgnummer="3">Test 27</categorie>
<categorie id="MLF0000030"
super-id="MLF0000003" volgnummer="4">Test 30</categorie>
<categorie id="MLF0000031"
super-id="MLF0000003" volgnummer="5">Test 31</categorie>
</categorieen>
</classificatie>
</classificaties>
</root>
【问题讨论】:
-
@user,请准确解释问题所在。根据您提供的信息无法提供帮助。向我们展示源 XML 和 XSLT 样式表(两者都完整,但最好尽可能精简)。而且你要生成的XML是一行很长的,可读性不强。
-
@user469872:您正在为
classificatie元素生成唯一标识符(可能为categorie,这是未知的),并且您想在Classification_Category元素中使用这些生成的ID(显然绑定classificatie到categorie元素)。这一切都是可控的。但是,除了生成的id还有什么关系? -
那么,问题是什么?我没有看到...
-
@Dimitre Novatchev - 请参阅帖子末尾的更新部分
-
@user469872:您还没有提供源 XML 文档。请。