如何创建XML元素引用?

时间:2017-04-04 05:01:57

标签: xml

在XML中,有很多元素在很多地方使用。示例列表如下

            <platform>PLAT_X86_SLES_11_SP3</platform>
            <platform>PLAT_X86_64_SLES_11_SP3</platform>
            <platform>PLAT_X86_SLES_12</platform>
            <platform>PLAT_X86_64_SLES_12</platform>
            <platform>PLAT_X86_SLES_12_SP1</platform>
            <platform>PLAT_X86_64_SLES_12_SP1</platform>
            <platform>PLAT_X86_SLES_12_SP2</platform>
            <platform>PLAT_X86_64_SLES_12_SP2</platform>
            <platform>PLAT_X86_RHEL_6_5</platform>
            <platform>PLAT_X86_64_RHEL_6_5</platform>

该列表正在全部使用,仅在下面的许多地方排除2或3个平台。

<platform_support>
    <platform>PLAT_X86_SLES_11_SP3</platform>
    <platform>PLAT_X86_64_SLES_11_SP3</platform>
    <platform>PLAT_X86_SLES_12</platform>
    <platform>PLAT_X86_64_SLES_12</platform>
    <platform>PLAT_X86_SLES_12_SP1</platform>
    <platform>PLAT_X86_64_SLES_12_SP1</platform>
</platform_support>

我想要做的是,我想在开头定义一个完整的列表,并在我的标记中使用它的引用。如下所示:

<platforms>
            <platform index="1">PLAT_X86_SLES_11_SP3</platform>
            <platform index="2">PLAT_X86_64_SLES_11_SP3</platform>
            <platform index="3">PLAT_X86_SLES_12</platform>
            <platform index="4">PLAT_X86_64_SLES_12</platform>
            <platform index="5">PLAT_X86_SLES_12_SP1</platform>
            <platform index="6">PLAT_X86_64_SLES_12_SP1</platform>
            <platform index="7">PLAT_X86_SLES_12_SP2</platform>
            <platform index="8">PLAT_X86_64_SLES_12_SP2</platform>
            <platform index="9">PLAT_X86_RHEL_6_5</platform>
            <platform index="10">PLAT_X86_64_RHEL_6_5</platform>
</platforms>

用法如下:

<platform_support index_list="1,2,3,4,5,6">
</platform_support>

另一种用法如下:

<platform_support index_list="3,4,5,6,7,8">
</platform_support>

我不知道XML中是否有任何此类功能可用。如果您有任何想法我如何实现这一点请提及。

这样做是个好主意吗?因为每次需求的微小变化都需要改变很多地方。这只是我写的一个例子。我拥有4500行代码的巨大XML,其中包含许多此类列表。

1 个答案:

答案 0 :(得分:0)

看起来我不是很擅长,但这是我可以提供的。 XML中有一个名为XQuery的漂亮主题,它将对您有所帮助。 将XQuery视为数据库的SQL,您可以查询使用它的xmal数据。

XQuery有一个序列,可以是$ items = 1,2,3,5,89或$ items = orange,apple,somenames,anything

所以这是一个提示。 您可以使用索引属性,如上所示,在您的问题中与FLOWR(Xquery技术)一起使用,并使用您的自定义列表作为序列。 这是关于我在说什么的提示

https://www.tutorialspoint.com/xquery/xquery_sequences.htm

https://www.tutorialspoint.com/xquery/xquery_flwor.htm

注意FLOWR可以嵌套,非常棒。