gpt4 book ai didi

xml - 选择一个带有 xmlns 的节点?

转载 作者:行者123 更新时间:2023-12-04 16:59:33 24 4
gpt4 key购买 nike

我试图在 xsl 中选择 xhtml 文档中的所有链接。一些 anchor 标记具有命名空间声明 xmlns="http://www.w3.org/1999/xhtml"在他们之中。这些没有被选中。例如使用此 xml 文档:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="xsl.xsl"?>
<root>
<item>
this iz sum text and it haz sum <a xmlns="http://www.w3.org/1999/xhtml" href="http://cheezburger.com/">linx</a> in it.
Teh linx haz piks of <a href="http://icanhascheezburger.com/">kittehs</a> in dem.
</item>
</root>

和这个 xsl:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<dl>
<xsl:for-each select="//root/item/a">
<dd><xsl:value-of select="."/></dd>
<dt><xsl:value-of select="@href"/></dt>
</xsl:for-each>
</dl>
</html>
</xsl:template>
</xsl:stylesheet>

仅选择了第二个链接。有人可以解释这里发生了什么以及我如何解决它?

最佳答案

如果您需要位于不同命名空间中的两个节点,请使用:

/root/item/*[local-name() = 'a']

但是,这种情况很少发生,通常,您只需要一个命名空间中的节点:
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:example="http://www.w3.org/1999/xhtml"
>
....
<xsl:for-each select="/root/item/example:a">

关于xml - 选择一个带有 xmlns 的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3858843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com