我一直收到此错误消息
必填属性'选择'不见了。
我之前已经使用过此代码并且工作正常,但似乎它不适用于
<xsl:output method="text" />
希望你能帮助我。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wd="urn:com.workday.report/Sample_Outbound">
<xsl:output method="text" />
<xsl:variable name="linefeed" select="'
'"></xsl:variable>
<xsl:variable name="StreetAddress1">Street Address 1</xsl:variable>
<xsl:template match="wd:Report_Data">
<File>
<!-- Header -->
<Header>
<StreetAddress1>
<xsl:value-of select="$StreetAddress1" />
</StreetAddress1>
<xsl:value-of select="$linefeed" />
</Header>
<xsl:for-each select="wd:Report_Entry">
<Record>
<Work_Street_Address_1>
<xsl:call-template name="Remove-Special-Characters-Commas">
<xsl:with-param name="normalize-string"
select="wd:Work_Street_Address_1" />
</xsl:call-template>
</Work_Street_Address_1>
<xsl:value-of select="$linefeed" />
</Record>
</xsl:for-each>
</File>
</xsl:template>
<xsl:template name="Remove-Special-Characters-Commas">
<xsl:param name="normalize-string" />
<xsl:variable name="AllowedSymbols"
select="'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.,#():@/;\''_&'" />
<xsl:variable name="stringValuePreformatted"
select="translate($normalize-string,'àâäèéêëîïôœùûüÿÀÁÄÈÉÊËÎÏÔŒÙÛÜŸçÇáéíóúÁÉÍÓÚäöüÄÖÜßàèéìòóùÀÈÉÌÒÓÙáéíóúüÁÉÍÓÚÜñÑ¿¡','aaaeeeeiioeuuuYAAAEEEEIIOEUUUYCCaeiouAEIOUaouAOUBaeeioouAEEIOOUaeiouuAEIOUUnN?1')" />
<xsl:value-of
select="normalize-space(translate($stringValuePreformatted, translate($stringValuePreformatted, $AllowedSymbols,''),''))" />
</xsl:template>
</xsl:stylesheet>
行错误是
line 39: Error parsing XPath expression ''abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.,#():@/;\''_&''.
line 39: Required attribute 'select' is missing.
enter code here
由于
答案 0 :(得分:0)
解决问题的最简单方法是从:
更改变量的定义<xsl:variable name="AllowedSymbols"
select="'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.,#():@/;\''_&'" />
为:
<xsl:variable name="AllowedSymbols">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.,#():@;'_&</xsl:variable>
或者,您可以像这样切换单引号和双引号:
<xsl:variable name="AllowedSymbols"
select='"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.,#():@;'_&"'/>
然后你无法在列表中添加双引号。
答案 1 :(得分:-1)
替换你的行
<xsl:variable name="AllowedSymbols" select="'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.,#():@/;\''_&'" />
通过
<xsl:variable name="apos">'</xsl:variable>
<xsl:variable name="AllowedSymbols" select="concat('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.,#():@/;_\&',$apos)" />
一切都应该按预期工作
在这种方法中,我使用this SO answer通过使用变量来处理'
情况。
答案 2 :(得分:-1)
问题的根源是'
。用2个撇号替换它。