Xslt XSL-无法将命名空间添加到根节点
我有一个html,我想使用html agility pack库将其解析为xml。以下是xsl:Xslt XSL-无法将命名空间添加到根节点,xslt,html-agility-pack,Xslt,Html Agility Pack,我有一个html,我想使用html agility pack库将其解析为xml。以下是xsl: <?xml version="1.0" encoding="utf-8" ?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <BusinessDetail> &l
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<BusinessDetail>
<Name>
<xsl:value-of select="//span[@class='pp-place-title']/span" />
</Name>
<Address>
<xsl:value-of select="//span[@class='pp-headline-item pp-headline-address']/span"/>
</Address>
...
</BusinessDetail>
</xsl:template>
</xsl:stylesheet>
...
我只想向根节点添加一个名称空间。预期产出为:
<BusinessDetail xmlns:g="http://myurl.com">
<Name>
...
</Name>
..
</BusinessDetail>
...
..
因此,请将我的xls更改为:
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<BusinessDetail xmlns:g="http://myurl.com">
<Name>
<xsl:value-of select="//span[@class='pp-place-title']/span" />
</Name>
<Address>
<xsl:value-of select="//span[@class='pp-headline-item pp-headline-address']/span"/>
</Address>
...
</BusinessDetail>
</xsl:template>
</xsl:stylesheet>
...
但是名称空间不会出现在输出中。有什么问题吗?恐怕您试图创建的输出毫无意义!思考以下文档的含义:
<BusinessDetail xmlns:g="http://myurl.com">
<Name>
...
</Name>
..
</BusinessDetail>
这确保了
BusinessDetail
及其所有子元素都位于http://myurl.com
名称空间。您需要将名称空间添加到样式表中
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:g="http://myurl.com">
<xsl:template match="/">
<BusinessDetail>
<Name>
<xsl:value-of select="//span[@class='pp-place-title']/span" />
</Name>
<Address>
<xsl:value-of select="//span[@class='pp-headline-item pp-headline-address']/span"/>
</Address>
...
</BusinessDetail>
</xsl:template>
</xsl:stylesheet>
...
但是,除非您指定使用该名称空间的任何节点(您的示例除了定义名称空间之外没有指定),否则它将不会显示在输出中。Hi-我不同意,您不必将名称空间添加到xsl:stylesheet元素,它可以出现在文档中的任何位置。但是是的,你是对的,除非它被使用,否则它不会出现在输出中@科林也许我的措辞不好,一个例子强化了这个具体案例。至少我的初稿没有提到名称空间别名:)
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:g="http://myurl.com">
<xsl:template match="/">
<BusinessDetail>
<Name>
<xsl:value-of select="//span[@class='pp-place-title']/span" />
</Name>
<Address>
<xsl:value-of select="//span[@class='pp-headline-item pp-headline-address']/span"/>
</Address>
...
</BusinessDetail>
</xsl:template>
</xsl:stylesheet>