【发布时间】:2015-07-02 12:16:44
【问题描述】:
我有一个包含客户详细信息的 XML(公司名称、地址、邮政编码、城市、尊称、名字等)
<Addresses locale="AU">
<Address>
<Honorific/>
<FirstName/>
<LastName/>
<CompanyName>Braschs Pty Ltd</CompanyName>
<CompanyName2/>
<Address1>71 Sheridan Street</Address1>
<Address2/>
<PostalCode>4870</PostalCode>
<City>Cairns</City>
<City2/>
<District/>
<StateCode>QLD</StateCode>
<State>Queensland</State>
<CountryCode/>
<Country/>
</Address>
</Addresses>
还有一个 xsl 文件,它应该按照澳大利亚地址的写入顺序给我输出。 (不同国家写地址的方式不同)
<xsl:template match="//Address[../@locale='AU']">
<address>
<p>
<xsl:if test=" Honorific != '' "><xsl:value-of select="Honorific" /> </xsl:if><xsl:if test=" FirstName != '' "><xsl:value-of select="FirstName" /> </xsl:if><xsl:if test=" LastName != '' "><xsl:value-of select="LastName" /></xsl:if>
</p>
<h4><xsl:value-of select="CompanyName" /></h4>
<p>
<xsl:if test=" CompanyName2 != '' ">
<xsl:value-of select="CompanyName2" /><br />
</xsl:if>
<xsl:value-of select="Address1" /><br />
<xsl:if test=" Address2 != '' ">
<xsl:value-of select="Address2" /><br />
</xsl:if>
<xsl:value-of select="City" />, <xsl:value-of select="StateCode" /> <xsl:value-of select="PostalCode" /><br />
<xsl:if test="Country!= '' ">
<xsl:value-of select="Country"/>
</xsl:if>
</p>
</address>
</xsl:template>
这给了我输出:
<address>
<p />
<h4>Braschs Pty Ltd</h4>
<p>71 Sheridan Street<br />Cairns, QLD 4870<br />
</p>
</address>
我现在有一个空的 p-tag,因为 p-tag 中的值都不可用(尊敬、名字、姓氏)。
那么,摆脱空标签的最佳选择是什么?我可以检查我的输出是否有空标签并删除它们吗?
我想到了一个 if 方向,例如:
<xsl:if test=" Honorific != '' " or "FirstName != '' ">
但是我得到一个错误,“在错误的位置。
谢谢!
【问题讨论】: