gpt4 book ai didi

xslt - xslt 中匹配命名空间的问题

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

具有特定节点的匹配元素存在问题。

xml:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" herf="B1.xsl"?>
<profile xmlns:base = "urn:mytest:baseInfo"
xmlns:prf="http://www.openmobilealliance.org/tech/profiles/UAPROF/ccppschema-20021212#">
<base:Description>
<base:text>description of profile</base:text>
</base:Description>
<prf:Component>
<prf:Keyboard>PhoneKeyPad</prf:Keyboard>
<prf:Model>SampleModel</prf:Model>
<prf:NumberOfSoftKeys>3</prf:NumberOfSoftKeys>
<prf:PixelAspectRatio>1x1</prf:PixelAspectRatio>
<prf:ScreenSize>128x240</prf:ScreenSize>
</prf:Component>
</profile>

XSLT 是:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:base = "urn:mytest:baseInfo" xmlns:prf="http://www.openmobilealliance.org/tech/profiles/UAPROF/ccppschema-20021212#">
<xsl:output method="xml" indent="yes"/>


<xsl:template match="prf:*">
<xsl:variable name="temp">
<xsl:value-of select="local-name(.)"/>
</xsl:variable>

<xsl:element name="{$temp}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>

</xsl:stylesheet>

结果是:
<?xml version="1.0" encoding="UTF-8"?>description of profile<Component>
<Keyboard>PhoneKeyPad</Keyboard>
<Model>SampleModel</Model>
<NumberOfSoftKeys>3</NumberOfSoftKeys>
<PixelAspectRatio>1x1</PixelAspectRatio>
<ScreenSize>128x240</ScreenSize>
</Component>

为什么还会输出“配置文件描述”?它具有“基本”命名空间。

提前致谢。

最佳答案

简单的答案是:因为您永远不会告诉 XSLT 处理器忽略它。

您提供处理 prf:* 的模板,但您不禁止处理 base: .没有别的,XSLT 处理器将默认行为( built-in rules ,还有 here )应用于它遇到的任何自定义模板未处理的节点。

元素节点的默认行为是:

  • 将它们的文本节点子节点复制到输出,
  • 处理它们的子元素

  • 知道了,您的 <base:Description><base:Text>元素产生的正是你所看到的。为了防止它,要么用一个空模板捕捉它们:
    <xsl:template match="base:*" /> 

    或者通过为根节点定义模板来手动 Bootstrap 流程:
    <xsl:template match="/">
    <xsl:apply-templates select="profile/prf:Component" />
    </xsl:template>

    关于xslt - xslt 中匹配命名空间的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6308996/

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