Xslt-强制@attribute唯一性

Xslt-强制@attribute唯一性,xslt,attributes,unique,Xslt,Attributes,Unique,我很少使用xslt,所以我不是最擅长的,但是,我想知道如何着手解决这个问题: <Element> <childElement type="type1">Bob</childElement> <childElement type="type1">Smith</childElement> <childElement type="type2">Bob</childElement> </Eleme

我很少使用xslt,所以我不是最擅长的,但是,我想知道如何着手解决这个问题:

<Element>
   <childElement type="type1">Bob</childElement>
   <childElement type="type1">Smith</childElement>
   <childElement type="type2">Bob</childElement>
</Element>"

上下快速移动
史密斯
上下快速移动
"

我想强制@type唯一性,如果它们具有相同的@type,我将只获取其中一个childelement。不同的@type可以具有相同的值(在本例中,两个bob就可以了)。关于如何在xslt中解决此问题,有什么帮助吗?

这里有一个XPath,可以仅获取唯一的@type值

//childElement[not(@type=preceding::childElement/@type)]
…您的示例的结果是

Location: 3:5
Description: /Element[1]/childElement[1] - Bob
Location: 5:5
Description: /Element[1]/childElement[3] - Bob

下面是一个XPath,它只获取唯一的@type值

//childElement[not(@type=preceding::childElement/@type)]
…您的示例的结果是

Location: 3:5
Description: /Element[1]/childElement[1] - Bob
Location: 5:5
Description: /Element[1]/childElement[3] - Bob

虽然可以在XSLT中执行一些验证,但这通常是通过xml模式(xsd)完成的。请看xs:unique和xs:key/xs:keyref虽然可以在XSLT中执行一些验证,但这通常是通过xml模式(xsd)完成的。看看xs:unique和xs:key/xs:keyrefBrilliant!我以前从未使用过xpath,只是非常基本的xslt转换。感谢大家的回答!非常棒!我以前从未使用过xpath,只是非常基本的xslt转换。感谢大家的回答!