Xml 命名模板的XSLT 1.0编译错误

Xml 命名模板的XSLT 1.0编译错误,xml,xslt-1.0,msxml6,Xml,Xslt 1.0,Msxml6,我试图用XML中的Phone number和faxNumber元素处理空间问题 这些要素包括: <PhoneNumber>0870 6071352</PhoneNumber> <FaxNumber>01722 422301</FaxNumber> 08706071352 01722 422301 但它们也可以是: 08706071352 因此,我需要删除前导和尾随空格,保留任何数字之间的空格,并使用前导空格将结果格式化为71个字符的固定长度

我试图用XML中的Phone number和faxNumber元素处理空间问题

这些要素包括:

<PhoneNumber>0870 6071352</PhoneNumber>
<FaxNumber>01722 422301</FaxNumber>
08706071352
01722 422301
但它们也可以是:

08706071352

因此,我需要删除前导和尾随空格,保留任何数字之间的空格,并使用前导空格将结果格式化为71个字符的固定长度

因此,我正在尝试编写一个命名模板,该模板将删除空格,然后使用前导空格将输出填充到71个字符的固定长度

这是我定义的模板,但它没有编译-我得到了一个预期的错误表达式删除该行:

<xsl:value-of select=""/>
在以下XML文档上运行时

<root>
  <num>   </num>
  <num>0123  456 7890   </num>
  <num>&#9;212-345 6789</num><!-- &#9; is a tab character -->
  <num/>
</root>

0123  456 7890   
	212-345 6789
产生正确的结果

>>>                            <<<
>>>                 01234567890<<<
>>>                 212-3456789<<<
>>>                            <<<

>>>01234567890>212-3456789>谢谢,但是当我使用
translate
时,当元素为空时,我会得到一个不完整的字符串如何在
020 123456
中保留空格,但会丢失任何尾随空格和前导空格,加上输出71个字符的正确长度,即使它是空的?@Philip我无法重现您的问题-当我使用
$text
的空字符串值测试模板时,我得到了71个空格的正确输出。@Philip如果您想丢失前导和尾随空格,但保留内部空格,则可以使用
规范化空格
而不使用
翻译
normalize space
函数去除前导和尾随空格,并将一个或多个空格字符的任何内部运行转换为单个空格。
<root>
  <num>   </num>
  <num>0123  456 7890   </num>
  <num>&#9;212-345 6789</num><!-- &#9; is a tab character -->
  <num/>
</root>
>>>                            <<<
>>>                 01234567890<<<
>>>                 212-3456789<<<
>>>                            <<<