首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用XSLT消除基于XML for Mythtv中一个或多个文本值的节点

使用XSLT消除基于XML for Mythtv中一个或多个文本值的节点
EN

Stack Overflow用户
提问于 2016-07-02 08:30:16
回答 0查看 34关注 0票数 0

给定示例(简化的) MythTV XML程序指南:

代码语言:javascript
复制
<?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&apos;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>节点。

这是我一直在尝试的,只是为了解决“裸体”的问题:

代码语言:javascript
复制
<?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上尝试同样的基本方法,它就能起作用:

代码语言:javascript
复制
  <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列表上。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38155366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档