【问题标题】:XSL Transform NameSpaceXSL 转换命名空间
【发布时间】:2016-08-05 04:57:42
【问题描述】:

我正在使用 XSL 做一些工作,但遇到了一些初学者的困难。

对于初学者,我通过将 xsd 转换为 xml 来获取我的源代码。目前我只是想先匹配元素,然后再专注于样式。对于 xsd 到 xml 样式表,我还没有找到很多信息源(至少对我来说足够接近),这就是为什么到目前为止我将它基于转换后的 xml。

我的源代码的简化版本是:

<n1:Test xmlns:n1="urn:com:sam:types:test">
     <a>1</a>
     <b>1</b>
     <c>1</c>
</n1:Test>

我的 XSL 是:

<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pla="urn:com:sam:types:test">
    <xsl:output method="xml" />
    <xsl:template match="/">

<xsl:for-each select="n1:Test">

<xsl:value-of select="a" />
<xsl:value-of select="b" />
<xsl:value-of select="c" />

</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

我对 XSL 相当不熟悉,并且一直在尽我最大的努力在 w3schools 工作,但我正在苦苦挣扎。我相信我的问题与我如何尝试应用我的命名空间有关。

任何指导将不胜感激。

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    您的样式表有两个明显的错误:

    1. version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 之间必须有一个空格;
    2. 您声明xmlns:pla="urn:com:sam:types:test",但您使用 n1: 前缀。你应该有:

      <xsl:for-each select="pla:Test">
      

      代替:

      <xsl:for-each select="n1:Test">
      

    您没有发布您的预期结果,因此我无法说出您可能遇到的其他问题 - 但如果您解决了这两个问题,至少您会得到 一些 的结果。

    【讨论】:

    • 感谢您的评论,这已经消除了我收到的任何错误 cmets,但我没有收到任何数据。我不太担心预期结果的格式,只是结果本身,例如能够简单地输出标签 中的任何内容。我目前只收到一个空回复,而现在我希望看到 111。
    • 观察@michael.hor257k 的两个点在这里有效,我得到111
    • 您使用的是哪个环境或编辑器?我正在使用我的公司编辑器和在线编辑器进行测试,并且只收到 xml 标头:
    • 没关系!那是因为我在测试中使用了小写的 t,呸。我已将您的示例应用到我更大的源代码中并使其正常工作!从那以后,我添加了一些样式,一切都像梦一样工作。谢谢你们的帮助!这消除了我的一大堆压力!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    相关资源
    最近更新 更多