XSLT 2.0类型检查:我收到错误“未知类型xsl:string”

问题描述

我正在研究复杂的XSLT转换。我正在使用XSLT 2.0。此页面https://www.ibm.com/developerworks/library/x-schemaawarexslt/index.html解释说,您可以在模板中添加类型检查。这对我不起作用。

这是我的示例XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:param name="columnWidths"/>
  <xsl:output method="xml" omit-xml-declaration="yes"/>
  <xsl:template match="/">
    <xsl:apply-templates select="row">
      <xsl:with-param name="columnWidths" select="$columnWidths"/>
    </xsl:apply-templates>
  </xsl:template>
  <xsl:template match="row">
    <xsl:param name="columnWidths"/>
    <line>
      <xsl:variable name="first">
        <xsl:value-of select="field[position() = 1]/text()"/>
      </xsl:variable>
      <xsl:variable name="second">
        <xsl:call-template name="padString">
          <xsl:with-param name="value" select="field[position() = 2]/text()"/>
          <xsl:with-param name="length" select="subsequence($columnWidths,2,1)"/>
          <xsl:with-param name="align" select="'left'"/>
        </xsl:call-template>
      </xsl:variable>
      <xsl:variable name="third">
        <xsl:call-template name="padString">
          <xsl:with-param name="value" select="field[position() = 3]/text()"/>
          <xsl:with-param name="length" select="subsequence($columnWidths,3,1)"/>
          <xsl:with-param name="align" select="'right'"/>
        </xsl:call-template>
      </xsl:variable>
    <xsl:value-of select="string-join(($first,$second,$third),' ')"/>
    </line>
  </xsl:template>
  <xsl:template name="padString">
    <xsl:param name="value"/>
    <xsl:param name="length"/>
    <xsl:param name="align"/>
    <xsl:choose>
      <xsl:when test="string-length($value) &gt;= number($length)">
        <xsl:value-of select="$value"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:variable name="appended">
          <xsl:call-template name="generalAppend">
            <xsl:with-param name="in" select="$value"/>
          </xsl:call-template>
        </xsl:variable>
        <xsl:call-template name="padString">
          <xsl:with-param name="value" select="$appended/append/*[local-name()=$align]/text()"/>
          <xsl:with-param name="length" select="$length"/>
          <xsl:with-param name="align" select="$align"/>
        </xsl:call-template>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  <xsl:template name="generalAppend">
    <xsl:param name="in" as="xsl:string"/>
    <append>
      <left><xsl:value-of select="concat($in,' ')"/></left>
      <right><xsl:value-of select="concat(' ',$in)"/></right>
    </append>
  </xsl:template>
</xsl:stylesheet>

我的XSLT处理器出现以下错误:

第[57]行第[43]列:未知类型xsl:string

此行显示为:

<xsl:param name="in" as="xsl:string"/>

出了什么问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)