需要XSLT从xml生成输出
我想创建xslt以创建类似以下内容的输出: 维沙尔维尔马 兰维杰·萨海 贾格米特·辛格试试这个需要XSLT从xml生成输出,xml,xslt,Xml,Xslt,我想创建xslt以创建类似以下内容的输出: 维沙尔维尔马 兰维杰·萨海 贾格米特·辛格试试这个 <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Edited by XMLSpy® --> <Company> <EmployeeDetail> <Employees> <name>Vishal</name> <
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<Company>
<EmployeeDetail>
<Employees>
<name>Vishal</name>
<name>Ranvijay</name>
<name>Jagmit</name>
</Employees>
<Employees>
<name>Verma</name>
<name>Sahay</name>
<name>Singh</name>
</Employees>
</EmployeeDetail>
</Company>
我在if语句中的每个名称后面添加了一个空格。if语句应该防止尾随空格。这是否足够,或者顺序是否重要
<xsl:for-each select="//Employees//name">
<xsl:text><xsl:value-of select="."/></xsl:text>
<xsl:if test="position() != last()" />
<xsl:text> </xsl:text>
</xsl:if>
</xsl:for-each>
此XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="text"/>
<xsl:template match="@*|node()">
<xsl:apply-templates select="@*|node()" />
</xsl:template>
<xsl:template match="name">
<xsl:value-of select="." /><xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
说明:
第一个模板与顶级元素匹配。找到它后,XSLT处理器将被指示将模板应用于第一个元素的所有子元素。
第二个模板匹配任何元素,如果XSLT中只有另一个对的调用,则该元素匹配第一个元素的任何子元素。在找到这样一个元素后,处理器输出当前元素的值、一个空格和相邻元素的值,即与当前元素位于同一位置但在第二个元素上下文中的元素。
注意&160;-这将输出一个空格,除非我们已经到达最后一个元素,从而防止尾随空格。
您好,谢谢您的回复,我仍然没有得到正确的输出VishalRanvijayJagmitVermaSahaySingh,但我需要Vishal Verma Ranvijay Sahay Jagmit Singhi感谢您的回复,我仍然没有得到正确的输出VishalRanvijayJagmitVermaSahaySingh,但我需要Vishal Verma Ranvijay Sahay Jagmit Singh
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output omit-xml-declaration="yes" indent="yes" method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<xsl:apply-templates select="*/*[1]/*"/>
</xsl:template>
<xsl:template match="*">
<xsl:variable name="vPos" select="position()"/>
<xsl:if test="position() > 1"> </xsl:if>
<xsl:value-of
select="concat(.,
' ',
../following-sibling::*/*[position() = $vPos])"/>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<!-- Edited by XMLSpy® -->
<Company>
<EmployeeDetail>
<Employees>
<name>Vishal</name>
<name>Ranvijay</name>
<name>Jagmit</name>
</Employees>
<Employees>
<name>Verma</name>
<name>Sahay</name>
<name>Singh</name>
</Employees>
</EmployeeDetail>
</Company>
Vishal Verma Ranvijay Sahay Jagmit Singh