4
我使用XMLSpy的使用以下XSLT:XSLT较低的情况下,使用.NET
<?xml version="1.0" encoding="UTF-16"?>
<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="xml" version="1.0" encoding="UTF-16" indent="yes"/>
<xsl:template match="*">
<xsl:element name="{lower-case(local-name())}">
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="* | text()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{lower-case(local-name())}"><xsl:value-of select="."/></xsl:attribute>
</xsl:template>
</xsl:stylesheet>
如果我尝试使用它在我的源代码(XslCompiledTransform)我得到一个异常告诉我“的功能较低case()'不是XSLT合成器的一部分。
所以我改变了改造一点点:
fn:lower-case
现在我的例外是,脚本或“http://www.w3.org/2005/xpath-functions”前缀可以外部对象不被发现。 这里有什么问题?我该如何解决它?
问候
你可以发布你与转化的代码?你是否正在创建一个NameTable并用正确的命名空间填充它? – Oded 2010-11-08 15:18:54
@Jaster:这是一个XSLT 2.0样式表。我认为XMLSpy使用Altova XSLT 2.0处理器,这很好。但是,你提到XslCompiledTrandform ...你是否在“纯”.NET中运行这种转换?这有一个XSLT 1.0处理器。 – 2010-11-08 15:34:44
好问题,+1。请参阅我的答案以获得解释和完整的XSLT1.0/XPath1.0解决方案。 :) – 2010-11-08 15:35:33