XSL:将外部XML转换为可读的XML

时间:2016-05-25 02:14:48

标签: xml xslt

我的问题很多,但我还有一些其他问题:Apply XSL to External XML

这是我正在使用的XML和XSL:

XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://image1.frequency.com/xslt/sample.xslt" ?>
<wrapper Source="http://image1.frequency.com/xml/externalxml.xml"/>

外部XML

 <?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:a="http://www.w3.org/2005/Atom" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:gazeebo="http://www.vimond.com/vimondFeedExtension/1.0" xmlns:machinima="http://xml.machinima.com/fields" xmlns:media="http://search.yahoo.com/mrss/" xmlns:plmedia="http://xml.theplatform.com/media/data/Media">
   <title>Feed</title>
   <updated>2016-05-25T00:53:54Z</updated>
   <entry>
      <id>guid</id>
      <title>Video Title</title>
      <content type="text">Description Text</content>
      <gazeebo:metadata name="description-short">Description Text</gazeebo:metadata>
      <gazeebo:metadata name="description-long" />
      <updated>2016-05-24T20:52:24Z</updated>
      <gazeebo:metadata name="episode">2153</gazeebo:metadata>
      <gazeebo:metadata name="genre">news</gazeebo:metadata>
      <gazeebo:metadata name="parental-guidance">TV-14</gazeebo:metadata>
      <gazeebo:metadata name="season">2</gazeebo:metadata>
      <gazeebo:metadata name="title" />
      <gazeebo:metadata name="hd">HD</gazeebo:metadata>
      <gazeebo:metadata name="actors">Actors</gazeebo:metadata>
      <gazeebo:metadata name="asset-length">192</gazeebo:metadata>
      <gazeebo:metadata name="director">Director</gazeebo:metadata>
      <gazeebo:metadata name="tags">uncharted</gazeebo:metadata>
      <gazeebo:metadata name="original-air-date">2016-05-23</gazeebo:metadata>
      <media:group>
         <media:thumbnail url="https://internal-dist.s3.amazonaws.com/s3.jpg" />
         <media:content url="http://link.theplatform.com/media&amp;format=redirect" type="video/mpeg" />
         <dcterms:valid>start=2016-05-27T07:00:00Z;end=2016-12-12T07:00:00Z;scheme=W3C-DTF</dcterms:valid>
      </media:group>
   </entry>
</feed>

XSLT

    <xsl:stylesheet version="2.0" xmlns="http://www.w3.org/2005/Atom" xmlns:a="http://www.w3.org/2005/Atom" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:template match="wrapper">
  <xsl:apply-templates select="document(./@Source)"/>
</xsl:template>


    <xsl:template match="entry/id">
        <CD-NAME><xsl:apply-templates select="@*|node()" /></CD-NAME>
    </xsl:template>
    <xsl:template match="entry">
        <CATALOG-NAME><xsl:apply-templates select="@*|node()" /></CATALOG-NAME>
    </xsl:template>

      <xsl:template match="@*|node()">
        <xsl:copy copy-namespaces="no">
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

当我通过这个工具运行它们:xslttest.appspot.com时,我得到了我想要的输出(将条目转换为项目)

<?xml version="1.0" encoding="UTF-8"?>
<feed>
   <title>Feed</title>
   <updated>2016-05-25T00:53:54Z</updated>
   <item>
      <id>guid</id>
      <title>Test Title</title>
      <content type="text">Description Text</content>
      <metadata name="description-short">Description Text</metadata>
      <metadata name="description-long"/>
      <updated>2016-05-24T20:52:24Z</updated>
      <metadata name="episode">2153</metadata>
      <metadata name="genre">news</metadata>
      <metadata name="parental-guidance">TV-14</metadata>
      <metadata name="season">2</metadata>
      <metadata name="title"/>
      <metadata name="hd">HD</metadata>
      <metadata name="actors">Actor</metadata>
      <metadata name="asset-length">192</metadata>
      <metadata name="director">Director</metadata>
      <metadata name="tags">uncharted</metadata>
      <metadata name="original-air-date">2016-05-23</metadata>
      <group>
         <thumbnail url="https://internal-dist.s3.amazonaws.com/s3.jpg"/>
         <content url="http://link.theplatform.com/media&amp;format=redirect"
                  type="video/mpeg"/>
         <valid>start=2016-05-27T07:00:00Z;end=2016-12-12T07:00:00Z;scheme=W3C-DTF</valid>
      </group>
   </item>
</feed>

但是,当我实际查看页面时,它似乎不可读。它呈现为文本,并跳过所有节点,如果我检查源,它只显示包装器,所以我想我无法解析它?

当我查看页面时,它看起来像这样(呈现为文本): http://image1.frequency.com/wrapper-test3.xml

那么,它的长短,我怎样才能让节点显示在页面上?它正确地显示在该工具上很奇怪,但是当我尝试查看具有此托管的页面时,它无法正常工作。还有另一种方法,即将正确的结果导出到另一个在视图源中正确拥有它的文档吗?我需要一个解析器来查看页面上的所有标签,这就是我首先将XML转换为XML的原因,因此它可以匹配我的规范。

任何帮助将不胜感激。我也愿意使用其他技术,比如用JS复制文档并将其放到另一个页面。我只需要将XML转换为更实用的形式,看似简单。

0 个答案:

没有答案