【问题标题】:I want to transform a xml file into RDF file with XSLT but the xml file looks a little bizarre to me我想使用 XSLT 将 xml 文件转换为 RDF 文件,但 xml 文件对我来说有点奇怪
【发布时间】:2014-09-09 15:00:23
【问题描述】:

我想知道如何像这样转换 xml 文件:

<doc>
   <str name="uri">A URI</str>                      
   <str name="name">test</str>
   <str name="vivo-url">A url</str>
</doc>

到这样的xml文件中:

<doc>
  <uri>A uri</uri>                      
  <name>test</name>
  <vivo-url>A url</vivo-url>
</doc>

【问题讨论】:

  • 要获得最佳答案,您应该提供一些您尝试使用的代码来获得所需的结果。
  • 奇怪的部分在哪里?

标签: java xml xslt


【解决方案1】:
    <xsl:output method="xml" omit-xml-declaration="no" indent="yes"/>

    <xsl:template match="doc">
        <xsl:text>
</xsl:text>
        <doc>
        <xsl:text>
</xsl:text>
            <xsl:apply-templates select="./str"/>
        </doc>
    </xsl:template>

    <xsl:template match="str">
        <xsl:element name="{@name}">
            <xsl:value-of select="."/>
        </xsl:element>
        <xsl:text>
</xsl:text>
    </xsl:template>

这会添加带有 xsl:text 的换行符(有点难看)。

xsl:element 创建一个 XML 元素,其标记名称为 name 属性 str

【讨论】:

  • "这会用 xsl:text 添加换行符" 是吗?删除 xsl:text 元素后会发生什么?
  • @michael.hor257k 然后发出模板的空白。在模板中使用“正确”的空格会使它们不再结构化以供阅读。我想你是这个意思。不过如何表述这个附带问题而又不至于过于挑剔?
  • 这是一个反问句。样式表中的 xsl:text 元素没有做任何事情。 xsl:output 元素的indent 属性可以。
  • @michael.hor257k 谢谢,虽然我似乎使用了与您不同的 XML 解析器,但效果相反。新的 java 8 安装。
猜你喜欢
  • 2014-11-15
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 2019-12-15
  • 1970-01-01
相关资源
最近更新 更多