首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT: generate()和2个相等的参数

XSLT: generate()和2个相等的参数
EN

Stack Overflow用户
提问于 2012-08-30 11:42:34
回答 1查看 153关注 0票数 0

使用XSLT2.0:

@ Linenumber 8370这个代码:

代码语言:javascript
复制
<TestCaseElement>
            <Name><![CDATA[DUT_AC_ON]]></Name>
            <TaggedValues>
            </TaggedValues>
            <Description>
                <Line><![CDATA[{TEXT_LANG} DUT AC ON]]></Line>
                <Line><![CDATA[{TEXT_ENGL} DUT AC ON]]></Line>
            </Description>
            <ModelingToolID><![CDATA[EAID_E9ACC0C9_D383_4ef0_99FF_F87C90BDF43C]]></ModelingToolID>
            <Hash><![CDATA[1238228468]]></Hash>
            <ID><![CDATA[1115]]></ID>
            <Stereotypes>
                <Stereotype><![CDATA[StepStart]]></Stereotype>
            </Stereotypes>
            <Role><![CDATA[TESTSTEP]]></Role>

</TestCaseElement>

,然后在XML文档中记录相同的ModelingToolID。

下面是要可视化的图片的外部链接:http://i.imgur.com/vTmki.png

我用这个XSL代码生成ID:

代码语言:javascript
复制
<xsl:for-each select="/TestCases/TestCase/TestCaseElement/ModelingToolID[  
 ( not( ../Stereotypes ) or ( ../Stereotypes/Stereotype != 'Precondition' and
  ../Stereotypes/Stereotype != 'Postcondition' ) ) and 
 (../Stereotypes/Stereotype = 'StepStart') and 
 ( ../Role = 'TESTSTEP' or ../Role = 'VP' )  and 
 ../Description and 
 ( generate-id() = generate-id( key( 'ModelingToolID', .)[ 1 ] ) ) ]">

您可以在Linenumber 8370和10296中看到两个标识的ModelingToolID。

我在转换中和我想要的输出中都需要TestCaseElements。

但是,可以理解的是,只会采取第一个。

我怎样才能得到两个TestCaseElement的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-30 12:04:25

你可以在Linenumber 8370和10296两个识别码ModelingToolID中看到。我在转换中和我想要的输出中都需要TestCaseElements。但是,可以理解的是,只有第一个才会被接受。我如何才能得到两个TestCaseElement的?

定义函数key() (没有附加谓词)生成一个节点集,每个节点具有与第二个参数相同的键。

因此,在需要的xsl:for-each 指令中,:

代码语言:javascript
复制
key( 'ModelingToolID', .)

这将选择在名为matchxsl:key"ModelingToolID"属性中匹配匹配模式的所有节点--这正是您想要得到的。

您可以在各种XSLT指令中使用这个表达式。

代码语言:javascript
复制
<xsl:variable name="vGroup" select="key( 'ModelingToolID', .)"/>

代码语言:javascript
复制
<xsl:for-each select="key( 'ModelingToolID', .)">
  <!-- Process the group here  -->
</xsl:for-each>

或者你需要做的任何事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12196105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档