如何在 if 条件中附加字符串值
How to append string values inside if condition
我是 XSL.I 的新手,有一个 XML,如下所示,如果 CoverageCode 等于 -'HomeCoverage',那么我必须验证 'roofRestrictionEndt' 的下 3 个元素, 'sidingRestrictionEndt'和'paintRestrictionEndt'。如果 'roofRestrictionEndt' 退出并且它的值为 'Y' 那么我需要在 'results' 标签下打印 'Roof' 如果 'sidingRestrictionEndt' 存在并且它的值为 'Y' 然后我需要打印 'siding' 以防万一它与上面的一起存在然后我需要打印 'Roof; siding'。如果 'paintRestrictionEndt' 存在并且它的值是 'Y' 以及其他 2 个元素,那么我需要打印 'Roof; siding; paint'。我尝试通过声明变量并编写 If 条件并尝试在 IF 条件内相应地附加值,但我开始知道声明的变量是不可变的。在java中,我们可以通过使用StringBuffer来实现。有什么方法可以在 XSL 中实现这一点?下面是XML.
<locationCoverage ID="3">
<coverageCode >HomeCoverage</coverageCode>
<roofRestrictionEndt >Y</roofRestrictionEndt>
<sidingRestrictionEndt>Y</sidingRestrictionEndt>
<paintRestrictionEndt >Y</paintRestrictionEndt>
<locationCoverage>
结果应如下所示
<results>
<result>Roof;siding;paint</result>
</results>
如果我有以下输入 XML
<locationCoverage ID="3">
<coverageCode >HomeCoverage</coverageCode>
<roofRestrictionEndt >Y</roofRestrictionEndt>
<paintRestrictionEndt >Y</paintRestrictionEndt>
</locationCoverage>
对于上述 XML 结果应如下所示
<results>
<result>Roof;paint</result>
</results>
如果有人帮助我,我将不胜感激。提前致谢。
如果我理解正确(这并不确定),你想做这样的事情:
<xsl:template match="locationCoverage[coverageCode='HomeCoverage']">
<xsl:variable name="test-results">
<xsl:if test="roofRestrictionEndt='Y'">Roof </xsl:if>
<xsl:if test="sidingRestrictionEndt='Y'">siding </xsl:if>
<xsl:if test="paintRestrictionEndt='Y'">paint</xsl:if>
</xsl:variable>
<result>
<xsl:value-of select="translate(normalize-space($test-results), ' ', ';')"/>
</result>
</xsl:template>
我是 XSL.I 的新手,有一个 XML,如下所示,如果 CoverageCode 等于 -'HomeCoverage',那么我必须验证 'roofRestrictionEndt' 的下 3 个元素, 'sidingRestrictionEndt'和'paintRestrictionEndt'。如果 'roofRestrictionEndt' 退出并且它的值为 'Y' 那么我需要在 'results' 标签下打印 'Roof' 如果 'sidingRestrictionEndt' 存在并且它的值为 'Y' 然后我需要打印 'siding' 以防万一它与上面的一起存在然后我需要打印 'Roof; siding'。如果 'paintRestrictionEndt' 存在并且它的值是 'Y' 以及其他 2 个元素,那么我需要打印 'Roof; siding; paint'。我尝试通过声明变量并编写 If 条件并尝试在 IF 条件内相应地附加值,但我开始知道声明的变量是不可变的。在java中,我们可以通过使用StringBuffer来实现。有什么方法可以在 XSL 中实现这一点?下面是XML.
<locationCoverage ID="3">
<coverageCode >HomeCoverage</coverageCode>
<roofRestrictionEndt >Y</roofRestrictionEndt>
<sidingRestrictionEndt>Y</sidingRestrictionEndt>
<paintRestrictionEndt >Y</paintRestrictionEndt>
<locationCoverage>
结果应如下所示
<results>
<result>Roof;siding;paint</result>
</results>
如果我有以下输入 XML
<locationCoverage ID="3">
<coverageCode >HomeCoverage</coverageCode>
<roofRestrictionEndt >Y</roofRestrictionEndt>
<paintRestrictionEndt >Y</paintRestrictionEndt>
</locationCoverage>
对于上述 XML 结果应如下所示
<results>
<result>Roof;paint</result>
</results>
如果有人帮助我,我将不胜感激。提前致谢。
如果我理解正确(这并不确定),你想做这样的事情:
<xsl:template match="locationCoverage[coverageCode='HomeCoverage']">
<xsl:variable name="test-results">
<xsl:if test="roofRestrictionEndt='Y'">Roof </xsl:if>
<xsl:if test="sidingRestrictionEndt='Y'">siding </xsl:if>
<xsl:if test="paintRestrictionEndt='Y'">paint</xsl:if>
</xsl:variable>
<result>
<xsl:value-of select="translate(normalize-space($test-results), ' ', ';')"/>
</result>
</xsl:template>