在 Worpress 中使用 xsl:for-each 将 XML 存档导出到组类别域时出现问题

问题描述 投票:0回答:1

我需要将 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-碱溶剂
xml database wordpress xslt foreach
1个回答
0
投票

我只能猜测你想做什么:

<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>
© www.soinside.com 2019 - 2024. All rights reserved.