拥有以下 XML :
<xsl:element name="input">
<xsl:attribute name="type">
<xsl:text>email</xsl:text>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:text>email</xsl:text>
</xsl:attribute>
<xsl:attribute name="class">
<xsl:text>form-control</xsl:text>
</xsl:attribute>
<xsl:attribute name="required">
<xsl:text>true</xsl:text>
</xsl:attribute>
</xsl:element>
如何通过以下输出将其完全传递给 XSLT :
<input type="email" name="email" class="form-control" required="true"/>
我已尝试xsl:copy-of
和disable-output-escaping
。但它们似乎都不起作用。甚至有可能实现这一目标吗?
感谢。
答案 0 :(得分:3)
给出格式良好的 XML输入,例如:
<xsl:element name="input" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:attribute name="type">
<xsl:text>email</xsl:text>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:text>email</xsl:text>
</xsl:attribute>
<xsl:attribute name="class">
<xsl:text>form-control</xsl:text>
</xsl:attribute>
<xsl:attribute name="required">
<xsl:text>true</xsl:text>
</xsl:attribute>
</xsl:element>
你可以使用:
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:template match="xsl:element">
<xsl:element name="{@name}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="xsl:attribute">
<xsl:attribute name="{@name}">
<xsl:apply-templates/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
返回:
<?xml version="1.0" encoding="UTF-8"?>
<input type="email" name="email" class="form-control" required="true"/>
正如您所看到的,输入是XSLT片段的事实在很大程度上与此无关。它唯一的区别是你不需要为输入的命名空间定义一个新的前缀。