给定示例(简化的) MythTV XML程序指南:
<?xml version='1.0' encoding='utf-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'>
<SOAP-ENV:Body><ns1:downloadResponse SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:ns1='urn:TMSWebServices'>
<xtvdResponse xsi:type='ns1:xtvdResponse'>
<messages xsi:type='ns1:messages'>
<message>Your subscription will expire: 2017-07-25T05:40:43Z</message>
</messages>
<xtvd from='2016-06-28T00:00:01Z' to='2016-07-12T00:00:01Z' schemaVersion='1.3' xmlns='urn:TMSWebServices' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='urn:TMSWebServices http://dd.schedulesdirect.org/tech/xml/schemas/tmsxtvd.xsd'>
<program id='MV000084150000'>
<title>Across 110th Street</title>
<mpaaRating>R</mpaaRating>
<starRating>**+</starRating>
<runTime>PT01H42M</runTime>
<year>1972</year>
<description>Mobsters and crooked police (Anthony Quinn, Yaphet Kotto) hunt three hoods who have robbed a mob operation in Harlem.</description>
<advisories>
<advisory>Adult Situations</advisory>
<advisory>Language</advisory>
<advisory>Violence</advisory>
</advisories>
</program>
<program id='MV000083800000'>
<title>Conan the Barbarian</title>
<mpaaRating>R</mpaaRating>
<starRating>***</starRating>
<runTime>PT02H09M</runTime>
<year>1982</year>
<description>Pit fighter Conan (Arnold Schwarzenegger) sets out with a Mongol and a queen (Sandahl Bergman) to take his father's sword from a snake king (James Earl Jones).</description>
<advisories>
<advisory>Adult Situations</advisory>
<advisory>Nudity</advisory>
<advisory>Graphic Violence</advisory>
</advisories>
</program>
</xtvd>
</xtvdResponse>
</ns1:downloadResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope> 我正在尝试开发一个XSLT,当<advisory>包含文本"Nudity“或"Brief Nudity”时,它将删除一个完整的<program>节点。
这是我一直在尝试的,只是为了解决“裸体”的问题:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="ISO-8859-1"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="program[descendant::advisory[text() = 'Nudity']]"/>
</xsl:stylesheet>...but在MythTV的XML上不起作用,但如果我在简单得多的XML上尝试同样的基本方法,它就能起作用:
<root>
<program>
<advisories>
<advisory>blabla</advisory>
</advisories>
</program>
<program>
<advisories>
<advisory>http://media.blabla.pdf</advisory>
</advisories>
</program>
<program>
<advisories>
<advisory>http://media2.blabla.pdf</advisory>
</advisories>
</program>
<program>
<advisories>
<advisory>http://media.otherblabla</advisory>
</advisories>
</program>
</root>当我运行xsltproc来使用--verbose对简单的MythTV应用XSLT时,我得到了一些我看不到的输出(xsltEvalXPathPredicate:返回1),所以我猜我需要应用一些XPath技术,但是我不确定。
有人能给出解决这个问题的建议吗?我的目的是记录如何制作一个免费的节目时间表过滤器,这样某些节目就不会被提供/显示在MythTV列表上。
https://stackoverflow.com/questions/38155366
复制相似问题