我的问题是如何为n个日期和' fechas'(另一个模板不允许)执行此操作。我是这么做的,我对每个人都很陌生。功能。谢谢!
输入xml:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="transformer.xsl"?>
<dc>
<date>11</date>
<date>20</date>
<status>Available</status>
<status>Collected</status>
</dc>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="/dc/status">
<date>
<xsl:if test="position()=1">
<xsl:attribute name="fechas">
<xsl:value-of select="."/>
</xsl:attribute>
<xsl:for-each select="/dc/date">
<xsl:if test="position()=1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:if>
<xsl:if test="position()=2">
<xsl:attribute name="fechas">
<xsl:value-of select="."/>
</xsl:attribute>
<xsl:for-each select="/dc/date">
<xsl:if test="position()=2">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:if>
</date>
</xsl:for-each>
这是我的输出:
<?xml version="1.0" encoding="UTF-8"?>
<date fechas="Available">11</date>
<date fechas="Collected">20</date>
答案 0 :(得分:0)
你可以试试这个:
<xsl:template match="/">
<xsl:for-each select="dc/date">
<xsl:variable name="pos" select="position()"/>
<xsl:copy>
<xsl:if test="../status[$pos]">
<xsl:attribute name="fechas">
<xsl:value-of select="../status[$pos]"/>
</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</xsl:copy>
</xsl:for-each>
</xsl:template>
处的转化
答案 1 :(得分:0)
这有什么问题:
<xsl:template match="/">
<date fechas="{dc/status[1]}>
<xsl:value-of select="dc/date[1]"/>
</date>
<date fechas="{dc/status[2]}>
<xsl:value-of select="dc/date[2]"/>
</date>
</xsl:template>