If statement 与x27之间的差异;其中';和';如果';在XSLT脚本中
我是XML/XSLT新手,对于If statement 与x27之间的差异;其中';和';如果';在XSLT脚本中,if-statement,xslt,where,If Statement,Xslt,Where,我是XML/XSLT新手,对于和在语句末尾添加where=“x”之间的区别,我有点困惑 下面是一些示例数据和两个XSLT版本的代码。我在这里尝试了两种方式:但是没有出现任何结果,所以我可能做错了什么。有人能帮我澄清一下吗 <?xml version="1.0"?> <Tests xmlns="http://www.adatum.com"> <Test TestId="0001" TestType="CMD"> <Name&
和在语句末尾添加where=“x”
之间的区别,我有点困惑
下面是一些示例数据和两个XSLT版本的代码。我在这里尝试了两种方式:但是没有出现任何结果,所以我可能做错了什么。有人能帮我澄清一下吗
<?xml version="1.0"?>
<Tests xmlns="http://www.adatum.com">
<Test TestId="0001" TestType="CMD">
<Name>Convert number to string</Name>
<CommandLine>Examp1.EXE</CommandLine>
<Input>1</Input>
<Output>One</Output>
</Test>
<Test TestId="0002" TestType="CMD">
<Name>Find succeeding characters</Name>
<CommandLine>Examp2.EXE</CommandLine>
<Input>abc</Input>
<Output>def</Output>
</Test>
<Test TestId="0003" TestType="GUI">
<Name>Convert multiple numbers to strings</Name>
<CommandLine>Examp2.EXE /Verbose</CommandLine>
<Input>123</Input>
<Output>One Two Three</Output>
</Test>
<Test TestId="0004" TestType="GUI">
<Name>Find correlated key</Name>
<CommandLine>Examp3.EXE</CommandLine>
<Input>a1</Input>
<Output>b1</Output>
</Test>
<Test TestId="0005" TestType="GUI">
<Name>Count characters</Name>
<CommandLine>FinalExamp.EXE</CommandLine>
<Input>This is a test</Input>
<Output>14</Output>
</Test>
</Tests>
使用if
statement进行编码
<?xml version="1.0" encoding="UTF-8"?>
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="Tests/Test">
<xsl:if test="@TestType='CMD'">
<xsl:value-of select="current()">
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet
对于xsl:for each
你的意思是被称为a,它由
因此,从
<xsl:for-each select="Tests/Test" where="@TestType='CMD'">
<xsl:value-of select="current()">
</xsl:for-each>
到
这应该可以解决问题。每个的xsl:for-each的属性是nowhere
你的意思是被称为a,它由
因此,从
<xsl:for-each select="Tests/Test" where="@TestType='CMD'">
<xsl:value-of select="current()">
</xsl:for-each>
到
这应该可以了。太棒了,谢谢!我只是假设where子句变红了,所以它很好:P我以后肯定会使用它:)您可能想注意到在select
表达式中使用谓词和在xsl:for each
的主体中使用xsl:if
:在第一种情况下position()
只对所选节点进行计数,在第二种情况下,它会对所有节点进行计数。@zx485每次检查是否可以在a中有多个[]位?比如:ODM/ODM/Study/MetaDataVersion[@MetaDataVersion=$MetaDataVersion]/CodeList[@OID=$varIEItem]/CodedValue=$varIEval]/Decode/TranslatedText
?@user10626943:可以。你为什么不自己试试呢?你应该看到它一直在工作(假设语法正确)。它对我不起作用,但我不确定问题是什么,只是想排除这种可能性:)太棒了,谢谢!我只是假设where子句变红了,所以它很好:P我以后肯定会使用它:)您可能想注意到在select
表达式中使用谓词和在xsl:for each
的主体中使用xsl:if
:在第一种情况下position()
只对所选节点进行计数,在第二种情况下,它会对所有节点进行计数。@zx485每次检查是否可以在a中有多个[]位?比如:ODM/ODM/Study/MetaDataVersion[@MetaDataVersion=$MetaDataVersion]/CodeList[@OID=$varIEItem]/CodedValue=$varIEval]/Decode/TranslatedText
?@user10626943:可以。你为什么不自己试试呢?你应该看到它一直在工作(假设语法正确)。它对我不起作用,但我不确定问题是什么,只是想排除这种可能性:)
<xsl:for-each select="Tests/Test[@TestType='CMD']">
<xsl:value-of select="current()">
</xsl:for-each>