因为我是xslt的新手,如果我的问题标题不正确,很抱歉!
我的 XML:
<workorder>
<wo>wo1234</wo>
<locspec>
<attrid>accessrd</attrid>
<attrvalue>nogothruroad</attrvalue>
</locspec>
<locspec>
<attrid>phone</attrid>
<attrvalue>99123</attrvalue>
</locspec>
<locspec>
<attrid>accessvehicle</attrid>
<attrvalue></attrvalue>
</locspec>
</workorder>
期望输出:
wo: wo1234
Road to access: nogothrurd
Phone number: 99123
Do you have vehicle access:
我的 xsl:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="workorder">
<xsl:apply-templates select="wo" />
<xsl:apply-templates select="locspec" />
</xsl:template>
<xsl:template match="wo">
<xsl:text>wonum: </xsl:text><xsl:value-of select="." />
</xsl:template>
<xsl:template match="locspec">
<xsl:for-each select="locspec/attrid">
<xsl:text>Road to access: </xsl:text>
<xsl:value-of select="locspec/attrid"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
所需的逻辑是:如果attrid是"accessrd",则获取它的attrvalue,如果attrid是"phone",则获取它的attrvalue,如果attrd是"accessvehicle",则获取它的attrvalue。
坦率地说,我不知道如何将xsl编码用于我想要的输出。请帮助我。提前感谢!
电流输出为空。
试试这个:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="wo">
<xsl:value-of select="concat(name(), ': ', .)"/>
</xsl:template>
<xsl:template match="locspec">
<xsl:text>
</xsl:text>
<xsl:choose>
<xsl:when test="attrid = 'accessrd'">
<xsl:text>Road to access</xsl:text>
</xsl:when>
<xsl:when test="attrid = 'phone'">
<xsl:text>Phone number</xsl:text>
</xsl:when>
<xsl:when test="attrid = 'accessvehicle'">
<xsl:text>Do you have vehicle access</xsl:text>
</xsl:when>
</xsl:choose>
<xsl:value-of select="concat(': ', attrvalue)"/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>