我需要将 Wordpress 生成的 XML 导入数据库。为此,我使用 XSLT 文件,但在创建类别表时遇到问题。我尝试过使用 xsl:for-each 但它不起作用。 原始 XML(示例)是这样的:
<?xml version="1.0" encoding="utf-8" ?>
<channel>
<title>TEST</title>
<description>test</description>
<pubDate>Thu, 18 Jan 2024 09:32:27 +0000</pubDate>
<language>es</language>
<wp:wxr_version>1.2</wp:wxr_version>
<wp:base_site_url>some url</wp:base_site_url>
<wp:base_blog_url>some url</wp:base_blog_url>
<item>
<title><![CDATA[Minio Plomo Electrolítico]]></title>
<link>url</link>
<wp:post_id>80</wp:post_id>
<wp:post_name><![CDATA[minio-plomo-electrolitico-750-ml]]></wp:post_name>
<category domain="test_iconos" nicename="base-solvente"><![CDATA[2-Base Solvente]]></category>
<category domain="test_iconos" nicename="rendimiento-de-5-a-6-m2-kg"><![CDATA[35-Rendimiento de 5 a 6 m2/ Kg]]></category>
<category domain="test_iconos" nicename="brocha-rodillo-pistola"><![CDATA[41-Brocha-Rodillo-Pistola]]></category>
<category domain="test_iconos" nicename="exterior-interior"><![CDATA[45-Exterior-Interior]]></category>
<category domain="test_iconos" nicename="lavabilidad-nivel-maximo"><![CDATA[64-Lavabilidad Nivel Máximo]]></category>
<category domain="test_familias" nicename="esmaltes-imprimaciones-y-selladoras"><![CDATA[Esmaltes, Imprimaciones y Selladoras]]></category>
<wp:postmeta>
<wp:meta_key><![CDATA[_edit_last]]></wp:meta_key>
<wp:meta_value><![CDATA[13]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
<wp:meta_key><![CDATA[test_referencia]]></wp:meta_key>
<wp:meta_value><![CDATA[33200031]]></wp:meta_value>
</wp:postmeta>
</item>
</channel>
</rss>
我需要的结果是这样的表格:
帖子_Id | 图标 |
---|---|
80 | 2-碱溶剂 |
80 | 35-Rendimiento de 5 a 6 m2/ Kg |
80 | 41-布罗查-罗迪洛-皮斯托拉 |
80 | 45-外部-内部 |
80 | 64-拉瓦比里达尼韦尔·马克西莫 |
我尝试编写这个xsl:
<?xml version="1.0"?>
\<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:wp="http://wordpress.org/export/1.2/"\>
\<xsl:output method="xml" indent="yes" /\>
\<xsl:template match="/" \>
<tbIconos>
<xsl:for-each select="/rss/channel/item/category[@domain='test_iconos']">
<!--<xsl:for-each select="key ('iconos',../category[@domain])"> -->
<Post_id><xsl:value-of select="/rss/channel/item/wp:post_id"/></id>
<Iconos><xsl:value-of select="/rss/channel/item/category"/></Iconos>
</xsl:for-each>
</tbIconos>
\</xsl:template\>
\</xsl:stylesheet\>
但我只得到这个结果:
帖子_Id | 图标 |
---|---|
80 | 2-碱溶剂 |
我只能猜测你想做什么:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wp="http://wordpress.org/export/1.2/" exclude-result-prefixes="wp">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/rss">
<tbIconos>
<xsl:for-each select="channel/item">
<xsl:variable name="post-id" select="wp:post_id" />
<xsl:for-each select="category[@domain='test_iconos']">
<Post_id>
<xsl:value-of select="$post-id"/>
</Post_id>
<Iconos>
<xsl:value-of select="."/>
</Iconos>
</xsl:for-each>
</xsl:for-each>
</tbIconos>
</xsl:template>
</xsl:stylesheet>