Xml 命名模板的XSLT 1.0编译错误
我试图用XML中的Phone number和faxNumber元素处理空间问题 这些要素包括: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个字符的固定长度
<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>	212-345 6789</num><!-- 	 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>	212-345 6789</num><!-- 	 is a tab character -->
<num/>
</root>
>>> <<<
>>> 01234567890<<<
>>> 212-3456789<<<
>>> <<<