我有一个XML文档,可能包含也可能不包含 Acceptable values are:
0 : no polygons
1 : pastel
2 : blue to yellow
3 : white to red
4 : light grey to red
5 : primary colors
6 : sequential single hue red
7 : sequential single hue lighter red
8 : light grey
节点。包含有错误和错误通知的任何字段名称
所以这个例子就是:
<errors>
我有一个FieldError模板:
<errors>
<first_name>Not allowed to be BigBoy</first_name>
<email>Required</email>
</errors>
在我的XSL文件中,我试图在字段名称旁边显示错误通知...所以在每个表单字段之后我调用FieldError模板:
在first_name字段之后:
<xsl:template name="FieldError" mode="user">
<xsl:param name="attribute" />
<xsl:if test="errors[@attribute=$attribute]">
<span class="form-error"><xsl:value-of select="errors[@attribute=$attribute]" /></span>
</xsl:if>
</xsl:template>
在电子邮件字段之后:
<xsl:call-template name="FieldError" mode="planner_user">
<xsl:with-param name="attribute">first_name</xsl:with-param></xsl:call-template>
我确定我之前有过这个工作,但是这次我不知道我到底做错了什么
答案 0 :(得分:0)
考虑以下示例:
<强> XML 强>
<root>
<errors>
<first_name>Not allowed to be BigBoy</first_name>
<email>Required</email>
</errors>
<data>
<first_name>BigBoy</first_name>
<last_name>Smith</last_name>
<email></email>
</data>
</root>
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:strip-space elements="*"/>
<xsl:key name="err" match="errors/*" use="name()" />
<xsl:template match="/root">
<output>
<xsl:apply-templates select="data"/>
</output>
</xsl:template>
<xsl:template match="data/*">
<xsl:copy>
<value>
<xsl:value-of select="."/>
</value>
<xsl:apply-templates select="key('err', name())"/>
</xsl:copy>
</xsl:template>
<xsl:template match="errors/*">
<error>
<xsl:value-of select="."/>
</error>
</xsl:template>
</xsl:stylesheet>
<强>结果强>
<?xml version="1.0" encoding="UTF-8"?>
<output>
<first_name>
<value>BigBoy</value>
<error>Not allowed to be BigBoy</error>
</first_name>
<last_name>
<value>Smith</value>
</last_name>
<email>
<value/>
<error>Required</error>
</email>
</output>