如何处理 'LOC_NAME' 元素值
How to handle the 'LOC_NAME' element value
在下面的示例中,我们试图处理 'LOC_NAME' 元素的值,如果 'Front' 单词最后出现,那么我们将使用 xslt 1.0 删除:
谁能帮忙。
输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<LOC_NAME>Front</LOC_NAME>
<LOC_NAME>Arapaoa Front.</LOC_NAME>
<LOC_NAME>Arapaoa Island. Front</LOC_NAME>
<LOC_NAME>North Stake Front Stbd No.31</LOC_NAME>
<LOC_NAME>North Stake No.35</LOC_NAME>
</root>
预期输出:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<LOC_NAME>Front</LOC_NAME>
<LOC_NAME>Arapaoa</LOC_NAME>
<LOC_NAME>Arapaoa Island.</LOC_NAME>
<LOC_NAME>North Stake Front Stbd No.31</LOC_NAME>
<LOC_NAME>North Stake No.35</LOC_NAME>
</root>
XSLT 代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/root">
<root>
<xsl:apply-templates/>
</root>
</xsl:template>
<xsl:template match="LOC_NAME">
<xsl:copy>
<xsl:choose>
<xsl:when test=".='Front'">
<xsl:value-of select="'Front'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
您显示的结果可以通过以下方式实现:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/root">
<root>
<xsl:for-each select="LOC_NAME">
<xsl:variable name="len" select="string-length(.)" />
<xsl:copy>
<xsl:choose>
<xsl:when test="substring(., $len - 5)=' Front'">
<xsl:value-of select="substring(., 1, $len - 6)"/>
</xsl:when>
<xsl:when test="substring(., $len - 6)=' Front.'">
<xsl:value-of select="substring(., 1, $len - 7)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
在下面的示例中,我们试图处理 'LOC_NAME' 元素的值,如果 'Front' 单词最后出现,那么我们将使用 xslt 1.0 删除:
谁能帮忙。
输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<LOC_NAME>Front</LOC_NAME>
<LOC_NAME>Arapaoa Front.</LOC_NAME>
<LOC_NAME>Arapaoa Island. Front</LOC_NAME>
<LOC_NAME>North Stake Front Stbd No.31</LOC_NAME>
<LOC_NAME>North Stake No.35</LOC_NAME>
</root>
预期输出:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<LOC_NAME>Front</LOC_NAME>
<LOC_NAME>Arapaoa</LOC_NAME>
<LOC_NAME>Arapaoa Island.</LOC_NAME>
<LOC_NAME>North Stake Front Stbd No.31</LOC_NAME>
<LOC_NAME>North Stake No.35</LOC_NAME>
</root>
XSLT 代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/root">
<root>
<xsl:apply-templates/>
</root>
</xsl:template>
<xsl:template match="LOC_NAME">
<xsl:copy>
<xsl:choose>
<xsl:when test=".='Front'">
<xsl:value-of select="'Front'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
您显示的结果可以通过以下方式实现:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/root">
<root>
<xsl:for-each select="LOC_NAME">
<xsl:variable name="len" select="string-length(.)" />
<xsl:copy>
<xsl:choose>
<xsl:when test="substring(., $len - 5)=' Front'">
<xsl:value-of select="substring(., 1, $len - 6)"/>
</xsl:when>
<xsl:when test="substring(., $len - 6)=' Front.'">
<xsl:value-of select="substring(., 1, $len - 7)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>