我的问题很多,但我还有一些其他问题: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&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&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转换为更实用的形式,看似简单。