由于我在第一個問題上得到了很多幫助,幫助我獲得了作業代碼,所以我不得不問另一個問題:-) 對于你們大多數人來說,這應該是一個簡單的問題,但我就是不知道怎么做我變得能夠匹配指定的文本。所以我有以下 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>
但什么都沒有發生,所以我認為解決方案的關鍵是匹配正確的渠道。這不會那么難吧?:-)
所以提前感謝一些有用的提示:-)
uj5u.com熱心網友回復:
改變:
<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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/415621.html
標籤:
