将HTML转换为XML的XSLT
问题描述:
我在尝试转换以下HTML代码,但遇到了获取所需值以及使用XSLT的子字符串函数的问题。这是我想改变的HTML代码的一部分:将HTML转换为XML的XSLT
<th scope="row">2005DEC</th>
<td>2,757</td>
以下XML代码:
<?xml version="1.0"?>
<Original>
<Entry>
<Year>2005</Year>
<Month>DEC</Month>
<Age>
<Group>
<value>90</value>
</Group>
</Age>
</Entry>
</Original>
我试图运行XSLT查询,但它一直得到一个错误。我的XSLT是:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<Original>
<xsl:for-each select="@scope=row">
<Entry>
<Year>
<xsl:value-of select="substring(@scope=row, 1, 4)"/>
</Year>
<Month>
<xsl:value-of select="substring(@scope=row, 5, 3)"/>
</Month>
<Age>
<Group>
<value>
<xsl:value-of select="td[1]"/>
</value>
</Group>
</Age>
</Entry>
</xsl:for-each>
</Original>
</xsl:template>
</xsl:stylesheet>
的错误是:
Ivans-MacBook-Pro:xslt-test ivanteong$ java -jar saxon9he.jar table823.html table823.xslt > out.xml
Error at xsl:value-of on line 13 column 73 of table823.xslt:
XPTY0004: Required item type of first argument of substring() is xs:string; supplied value
has item type xs:boolean
Error at xsl:value-of on line 16 column 73 of table823.xslt:
XPTY0004: Required item type of first argument of substring() is xs:string; supplied value
has item type xs:boolean
Failed to compile stylesheet. 2 errors detected.
答
好了,有了表达
<xsl:value-of select="substring(@scope=row, 5, 3)"/>
这是相当明显的,我希望,你为什么收到错误消息
Required item type of first argument of substring() is xs:string; supplied value has item type xs:boolean
我们不知道你的整个输入树是什么,但试试这个对于初学者:
<Group>
<value>
<xsl:value-of select="following-sibling::td[1]"/>
</value>
</Group>
</Age>
</Entry>
</xsl:for-each>
</Original>
</xsl:template>
答
请仔细阅读:[MCVE] –