我想知道是否可以在另一个XSLT文件中设置XSLT中的变量?
让我用一些代码解释自己。
默认情况下,我有以下文件( default.xsl ):
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl dom arr xsd i"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
xmlns:dom="http://www.test.nl/dom/">
<xsl:output method="xml" indent="no" omit-xml-declaration="yes" />
<!--Textbox-->
<xsl:template match="dom:TextBox">
<xsl:variable name="placeHolderText">placeholder tekst</xsl:variable>
<xsl:element name="textarea">
<xsl:attribute name="placeholder">
<xsl:value-of select="$placeHolderText"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
在某些情况下,我想要否决当前的默认实现,并在那里创建一个扩展文件: extension.xsl :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dom="http://www.test.nl/dom/" exclude-result-prefixes="dom">
<xsl:import href="default.xsl"/>
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />
<xsl:template match="dom:TextBox">
<xsl:variable name='placeHolderText'>unknown</xsl:variable>
</xsl:template>
</xsl:stylesheet>
在此扩展程序文件中,我想设置placeHolderText
。我想知道这有可能吗?因为在已经处理默认值之后将始终加载扩展文件。感谢您的反馈。
答案 0 :(得分:1)
一种可能的解决方案可能是使用mode
的模板并使用xsl:param
代替xsl:variable
。
试试default.xsl:
<!--Textbox-->
<xsl:template match="dom:TextBox" mode="useparam">
<xsl:param name="placeHolderText">placeholder tekst</xsl:param>
<xsl:element name="textarea">
<xsl:attribute name="placeholder">
<xsl:value-of select="$placeHolderText"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
<xsl:template match="dom:TextBox">
<xsl:apply-templates select="." mode="useparam" />
</xsl:template>
和extension.xsl:
<xsl:template match="dom:TextBox">
<xsl:apply-templates select="." mode="useparam" >
<xsl:with-param name="placeHolderText" select="'unknown'" />
</xsl:apply-templates>
</xsl:template>