0

我只是无法弄清楚我如何能够匹配指定的文本。所以我有以下 xml 数据。我想根据频道添加更多显示名称。

    <?xml version="1.0" encoding="UTF-8" ?>
    <!-- EPG XMLTV FILE CREATED BY Take-a-LUG TEAM- (c) 2020 Bastian Kleinschmidt -->
    <!-- created on 2022-01-09 23:17:01.019522 -->
    <tv generator-info-name="Takealug EPG Grabber Ver. 1.1.2+matrix" generator-info-url="https://github.com/DeBaschdi/service.takealug.epg-grabber">
            
        <channel id="ARD.de">
                    <display-name lang="de">Das Erste</display-name>          
        </channel>
        <channel id="ZDF.de">
                    <display-name lang="de">ZDF</display-name>
        </channel>
        <channel id="RTL.de">
                    <display-name lang="de">RTL</display-name>
        </channel>
        <channel id="Sat1.de">
                    <display-name lang="de">SAT.1</display-name>
         </channel>
        <channel id="Pro7.de">
                    <display-name lang="de">ProSieben</display-name>
        </channel>
        <channel id="Kabel.de">
                    <display-name lang="de">kabel eins</display-name>
        </channel>
 </tv>

如您所见,我为每个频道指定了频道 ID 和显示名称。现在我想要 fe 附加到<display-name>Das Erste</display-name>, 也<display-name>Das Erste HD</display-name>。对于 ZDF、ZDF HD 或对于 HD 后缀 auch 'Kabel 1' 作为显示名称的“Kabel Eins”。还有一些其他渠道我想做一些调整。我尝试了一些东西,fe:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

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

 <xsl:template match="channel/display-name[contains('Das Erste')]">
        <xsl:copy>
   <display-name>Das Erste HD</display-name>
    </xsl:copy>
 </xsl:template>
</xsl:stylesheet>

但什么都没有发生,所以我认为解决方案的关键是匹配正确的渠道。

4

1 回答 1

1

改变:

<xsl:template match="channel/display-name[contains('Das Erste')]">

至:

<xsl:template match="channel[contains(display-name, 'Das Erste')]">

参见:
https ://www.w3.org/TR/1999/REC-xpath-19991116/#predicates
https://www.w3.org/TR/1999/REC-xpath-19991116/#function-contains

于 2022-01-18T22:08:01.263 回答