这里是一个XML文件,表示项目及其优先级级别的列表,刻度为1-3。在创建文件时,没有设置优先级级别:
<root>
<section number="1">
<group number="1.1">
<item date="today" priority="Undefined"><title>Item1</title></item>
<item date="today" priority="Undefined"><title>Item2</title></item>
<item date="yesterday" priority="Undefined"><title>Item3</title></item>
</group>
<group number="1.2">
<item date="tomorrow" priority="Undefined"><title>Item4</title></item>
<item date="today" priority="Undefined"><title>Item5</title></item>
<item date="yesterday" priority="Undefined"><title>Item5</title></item>
</group>
</section>
</root>我后来得到了按项目分列的优先事项清单。他们只是在一个普通的文本文件中找到我,但我可以将它们放入任何必要的格式,包括XML。举个例子:
<priorities>
<item1 p="1">
<item2 p="3">
<item3 p="1">
<item4 p="2">
<item5 p="3">
<item6 p="3">
</priorities>我试图编写一个XSL转换,为每个项目适当地设置优先级属性。
在我看来,它应该是这样工作的(我已经有了第一步):
或者,我想了另一种方法:
注意:--这是一个精馏的示例;我正在尝试创建一个解决方案,该解决方案可以处理一个包含大约600个项目元素的解决方案,其中包含非常长的字符串作为标题。
我一直在谷歌上搜索,一直在想这样的事情是否可能发生。
用氧气16。
发布于 2015-06-27 23:09:23
若要将主输入中未定义的n‘the替换为优先级文件中n’the项的优先级,请使用
<xsl:template match="@priority[.='Undefined']">
<xsl:variable name="pos" select="count(../preceding::*[@priority='Undefined']"/>
<xsl:attribute name="priority" select="(doc('priorities.xml')//priority)[$pos]"/>
</xsl:template>结合一个合适的身份模板。
那是O(n^2),如果不是星期六晚上的午夜,我相信你会做得更好的。
https://stackoverflow.com/questions/31093804
复制相似问题