大家好(医生尼克!)
所以我遇到了一些困难的情况。 我正在尝试使用XSLT创建一个文件,它似乎无法工作。
首先让我告诉您我正在使用通过合并多个Feed创建的XML文件。 其结构如下:
<sites>
<support>
<rss>
<channel>
<title></title>
<link></link>
<description></description>
<item>
<link></link>
<title></title>
<description></description>
<guid></guid>
<pubDate></pubDate>
</item>
</channel>
</rss>
</support>
<corporate>
<rss>
<channel>
<title></title>
<link></link>
<description></description>
<item>
<link></link>
<title></title>
<description></description>
<guid></guid>
<pubDate></pubDate>
</item>
</channel>
</rss>
</corporate>
现在。我设法从一个站点接收所有信息(每个站点有多个项目)但我想从同一模板中获取其他站点的信息。
这就是我所做的:
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="sites">
<xsl:text>CHNL 1002</xsl:text>
<xsl:apply-templates select="support/rss/channel/item"/>
</xsl:template>
<xsl:template match="item">
<xsl:variable name="ms_title" select="/sites/support/rss/channel/title"/>
<xsl:variable name="ms_item_link" select="link"/>
<xsl:variable name="ms_item_title" select="substring-after(title, '/>')"/>
<xsl:variable name="ms_item_date" select="pubDate"/>
<xsl:variable name="ms_item_description" select="substring-after(description, '/><br />')"/>
<xsl:variable name="ms_item_image" select="substring-before(substring-after(description, 'src="'), '"')" />
我可以对这个网站使用这些变量。但我想在同一个模板中使用公司网站。但我无法从那个获得物品。 我尝试了一些东西,但最终只有第一项。但每个网站有多个项目..
我发现了代码的变体,以便从Feed中获取信息。但不是来自同一模板中的合并供稿。这甚至可能实现吗?
我尝试了以下内容:
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="sites">
<xsl:text>CHNL 1002</xsl:text>
<xsl:apply-templates select="support/rss/channel/item"/>
</xsl:template>
<xsl:template match="item">
<xsl:variable name="ms_title" select="/sites/support/rss/channel/title"/>
<xsl:variable name="ms_item_link" select="link"/>
<xsl:variable name="ms_item_title" select="substring-after(title, '/>')"/>
<xsl:variable name="ms_item_date" select="pubDate"/>
<xsl:variable name="ms_item_description" select="substring-after(description, '/><br />')"/>
<xsl:variable name="ms_item_image" select="substring-before(substring-after(description, 'src="'), '"')" />
<xsl:apply-templates select="corporate/rss/channel/item"/>
<xsl:variable name="rss_title" select="/sites/corporate/rss/channel/title"/>
<xsl:variable name="rss_item_link" select="link"/>
<xsl:variable name="rss_item_title" select="substring-after(title, '/>')"/>
<xsl:variable name="rss_item_date" select="pubDate"/>
<xsl:variable name="rss_item_description" select="substring-after(description, '/><br />')"/>
<xsl:variable name="rss_item_image" select="substring-before(substring-after(description, 'src="'), '"')" />
但是我得到的信息与第一个网站相同。
我希望我能清楚地解释自己。我不是一个好的解释者类型的人。 我希望有人能给我一个答案!我真的很感激! 感谢您抽出时间阅读我的这个可怕的故事,我期待着尝试一些新的东西!
谢谢!
答案 0 :(得分:0)
替换
<xsl:apply-templates select="support/rss/channel/item"/>
与
<xsl:apply-templates select="//item"/>
然后在模板内部确保使用相对路径,例如
<xsl:variable name="ms_title" select="/sites/support/rss/channel/title"/>
变为
<xsl:variable name="ms_title" select="title"/>