XSL - 对于each和If循环

时间:2015-12-16 14:48:28

标签: xml xslt

我试图在XML上运行转换,以根据属性值生成不包含源中某些元素的输出。

作为初学者,我在解决每个和if循环方面遇到了一些问题。

源XML:

<manifest xmlns="http://ns.adobe.com/f4m/1.0"><id>TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAP</id>
<duration>39.960</duration>
<mimeType>video/f4v</mimeType>
<streamType>recorded</streamType>
<bootstrapInfo id="PV4" profile="named">AAAAm2Fic3QAAAAAAAAABAAAAAPoAAAAAAAAm/AAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAAQBAAAAVWFmcnQAAAAAAAAD6AAAAAAEAAAAAQAAAAAAAAAAAAA88AAAAAIAAAAAAAA9QAAAJxAAAAADAAAAAAAAZFAAACd0AAAABAAAAAAAAIwAAAAQBAA=</bootstrapInfo>
<bootstrapInfo id="PV5" profile="named">AAAAm2Fic3QAAAAAAAAABAAAAAPoAAAAAAAAm/AAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAAQBAAAAVWFmcnQAAAAAAAAD6AAAAAAEAAAAAQAAAAAAAAAAAAA88AAAAAIAAAAAAAA9QAAAJxAAAAADAAAAAAAAZFAAACd0AAAABAAAAAAAAIwAAAAQBAA=</bootstrapInfo
<bootstrapInfo id="PV8" profile="named">AAAAm2Fic3QAAAAAAAAABAAAAAPoAAAAAAAAm/AAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAAQBAAAAVWFmcnQAAAAAAAAD6AAAAAAEAAAAAQAAAAAAAAAAAAA88AAAAAIAAAAAAAA9QAAAJxAAAAADAAAAAAAAZFAAACd0AAAABAAAAAAAAIwAAAAQBAA=</bootstrapInfo>
<bootstrapInfo id="PV10" profile="named">AAAAm2Fic3QAAAAAAAAABAAAAAPoAAAAAAAAm/AAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAAQBAAAAVWFmcnQAAAAAAAAD6AAAAAAEAAAAAQAAAAAAAAAAAAA88AAAAAIAAAAAAAA9QAAAJxAAAAADAAAAAAAAZFAAACd0AAAABAAAAAAAAIwAAAAQBAA=</bootstrapInfo>
<bootstrapInfo id="PV13" profile="named">AAAAm2Fic3QAAAAAAAAABAAAAAPoAAAAAAAAnAQAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAAQBAAAAVWFmcnQAAAAAAAAD6AAAAAAEAAAAAQAAAAAAAAAAAAA6NAAAAAIAAAAAAAA6IAAAKjAAAAADAAAAAAAAZFAAACd0AAAABAAAAAAAAIwAAAAQBAA=</bootstrapInfo>
<bootstrapInfo id="PV14" profile="named">AAAAm2Fic3QAAAAAAAAABAAAAAPoAAAAAAAAnAQAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAAQBAAAAVWFmcnQAAAAAAAAD6AAAAAAEAAAAAQAAAAAAAAAAAAA6NAAAAAIAAAAAAAA6IAAAKjAAAAADAAAAAAAAZFAAACd0AAAABAAAAAAAAIwAAAAQBAA=</bootstrapInfo>
<bootstrapInfo id="PA3" profile="named">AAAAe2Fic3QAAAAAAAAAAgAAAAPoAAAAAAAAm9UAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAAQBAAAANWFmcnQAAAAAAAAD6AAAAAACAAAAAQAAAAAAAAAAAAAnEAAAAAQAAAAAAAB1gAAAJkgA</bootstrapInfo>
<media streamId="PV4" url="TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAPPV4" bitrate="351" width="384" height="216" bootstrapInfoId="PV4">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAXUo9cKPXCgAFd2lkdGgAAAAAAAAAAAAABmhlaWdodAAAAAAAAAAAAAAMdmlkZW9jb2RlY2lkAgAESDI2NAAKYXZjcHJvZmlsZQBAWQAAAAAAAAAIYXZjbGV2ZWwAQDUAAAAAAAAADnZpZGVvZnJhbWVyYXRlAP/4AAAAAAAAAAl0cmFja2luZm8KAAAAAQMABmxlbmd0aAAAAAAAAAAAAAAJdGltZXNjYWxlAECPQAAAAAAAAAhsYW5ndWFnZQIAA2VuZwAACQAACQ==</metadata>
</media>
<media streamId="PV5" url="TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAPPV5" bitrate="226" width="512" height="288" bootstrapInfoId="PV5">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAXUo9cKPXCgAFd2lkdGgAAAAAAAAAAAAABmhlaWdodAAAAAAAAAAAAAAMdmlkZW9jb2RlY2lkAgAESDI2NAAKYXZjcHJvZmlsZQBAU0AAAAAAAAAIYXZjbGV2ZWwAQD4AAAAAAAAADnZpZGVvZnJhbWVyYXRlAP/4AAAAAAAAAAl0cmFja2luZm8KAAAAAQMABmxlbmd0aAAAAAAAAAAAAAAJdGltZXNjYWxlAECPQAAAAAAAAAhsYW5ndWFnZQIAA2VuZwAACQAACQ==</metadata>
</media>
<media streamId="PV8" url="TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAPPV8" bitrate="661" width="704" height="396" bootstrapInfoId="PV8">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAXUo9cKPXCgAFd2lkdGgAAAAAAAAAAAAABmhlaWdodAAAAAAAAAAAAAAMdmlkZW9jb2RlY2lkAgAESDI2NAAKYXZjcHJvZmlsZQBAU0AAAAAAAAAIYXZjbGV2ZWwAQD4AAAAAAAAADnZpZGVvZnJhbWVyYXRlAP/4AAAAAAAAAAl0cmFja2luZm8KAAAAAQMABmxlbmd0aAAAAAAAAAAAAAAJdGltZXNjYWxlAECPQAAAAAAAAAhsYW5ndWFnZQIAA2VuZwAACQAACQ==</metadata>
</media>
<media streamId="PV10" url="TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAPPV10" bitrate="1269" width="960" height="540" bootstrapInfoId="PV10">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAXUo9cKPXCgAFd2lkdGgAAAAAAAAAAAAABmhlaWdodAAAAAAAAAAAAAAMdmlkZW9jb2RlY2lkAgAESDI2NAAKYXZjcHJvZmlsZQBAU0AAAAAAAAAIYXZjbGV2ZWwAQD8AAAAAAAAADnZpZGVvZnJhbWVyYXRlAP/4AAAAAAAAAAl0cmFja2luZm8KAAAAAQMABmxlbmd0aAAAAAAAAAAAAAAJdGltZXNjYWxlAECPQAAAAAAAAAhsYW5ndWFnZQIAA2VuZwAACQAACQ==</metadata>
</media>
<media streamId="PV13" url="TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAPPV13" bitrate="2222" width="960" height="540" bootstrapInfoId="PV13">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAXRcKPXCj1wAFd2lkdGgAAAAAAAAAAAAABmhlaWdodAAAAAAAAAAAAAAMdmlkZW9jb2RlY2lkAgAESDI2NAAKYXZjcHJvZmlsZQBAWQAAAAAAAAAIYXZjbGV2ZWwAQD8AAAAAAAAADnZpZGVvZnJhbWVyYXRlAP/4AAAAAAAAAAl0cmFja2luZm8KAAAAAQMABmxlbmd0aAAAAAAAAAAAAAAJdGltZXNjYWxlAECPQAAAAAAAAAhsYW5ndWFnZQIAA2VuZwAACQAACQ==</metadata>
</media>
<media streamId="PV14" url="TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAPPV14" bitrate="3970" width="1280" height="720" bootstrapInfoId="PV14">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAXRcKPXCj1wAFd2lkdGgAAAAAAAAAAAAABmhlaWdodAAAAAAAAAAAAAAMdmlkZW9jb2RlY2lkAgAESDI2NAAKYXZjcHJvZmlsZQBAWQAAAAAAAAAIYXZjbGV2ZWwAQEAAAAAAAAAADnZpZGVvZnJhbWVyYXRlAP/4AAAAAAAAAAl0cmFja2luZm8KAAAAAQMABmxlbmd0aAAAAAAAAAAAAAAJdGltZXNjYWxlAECPQAAAAAAAAAhsYW5ndWFnZQIAA2VuZwAACQAACQ==</metadata>
</media>
<media streamId="PA3" url="TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAPPA3" bitrate="47" bootstrapInfoId="PA3">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAWQYUeuFHrgAMYXVkaW9jb2RlY2lkAgAEbXA0YQAGYWFjYW90AAAAAAAAAAAAAA9hdWRpb3NhbXBsZXJhdGUAQOdwAAAAAAAADWF1ZGlvY2hhbm5lbHMAQAAAAAAAAAAACXRyYWNraW5mbwoAAAABAwAGbGVuZ3RoAAAAAAAAAAAAAAl0aW1lc2NhbGUAQI9AAAAAAAAACGxhbmd1YWdlAgADZW5nAAAJAAAJ</metadata>
</media>
</manifest>

我正在研究生成一个输出xml,其中包含存在以下属性的相关引导程序和媒体节点,PV4,PV5,PV8,PV10和PA3

到目前为止我的XSL。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:f4m="http://ns.adobe.com/f4m/1.0" version="1.0">
<xsl:output method="xml" indent="yes" encoding="utf-8"/>
<xsl:template match="/">
<manifest xmlns="http://ns.adobe.com/f4m/1.0">
<id>
<xsl:value-of select="/f4m:manifest/f4m:id[1]/text()"/>
</id>
<duration>
<xsl:value-of select="/f4m:manifest/f4m:duration[1]/text()"/>
</duration>
<mimeType>
<xsl:value-of select="/f4m:manifest/f4m:mimeType[1]/text()"/>
</mimeType>
<streamType>
<xsl:value-of select="/f4m:manifest/f4m:streamType[1]/text()"/>
</streamType>
</manifest>
</xsl:template>
</xsl:stylesheet>

预期产出:

<manifest xmlns="http://ns.adobe.com/f4m/1.0">

<id>TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAP</id>
<duration>39.960</duration>
<mimeType>video/f4v</mimeType>
<streamType>recorded</streamType>
<bootstrapInfo id="PV4" profile="named">AAAAm2Fic3QAAAAAAAAABAAAAAPoAAAAAAAAm/AAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAAQBAAAAVWFmcnQAAAAAAAAD6AAAAAAEAAAAAQAAAAAAAAAAAAA88AAAAAIAAAAAAAA9QAAAJxAAAAADAAAAAAAAZFAAACd0AAAABAAAAAAAAIwAAAAQBAA=</bootstrapInfo>
<bootstrapInfo id="PV5" profile="named">AAAAm2Fic3QAAAAAAAAABAAAAAPoAAAAAAAAm/AAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAAQBAAAAVWFmcnQAAAAAAAAD6AAAAAAEAAAAAQAAAAAAAAAAAAA88AAAAAIAAAAAAAA9QAAAJxAAAAADAAAAAAAAZFAAACd0AAAABAAAAAAAAIwAAAAQBAA=</bootstrapInfo
<bootstrapInfo id="PV8" profile="named">AAAAm2Fic3QAAAAAAAAABAAAAAPoAAAAAAAAm/AAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAAQBAAAAVWFmcnQAAAAAAAAD6AAAAAAEAAAAAQAAAAAAAAAAAAA88AAAAAIAAAAAAAA9QAAAJxAAAAADAAAAAAAAZFAAACd0AAAABAAAAAAAAIwAAAAQBAA=</bootstrapInfo>
<bootstrapInfo id="PV10" profile="named">AAAAm2Fic3QAAAAAAAAABAAAAAPoAAAAAAAAm/AAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAAQBAAAAVWFmcnQAAAAAAAAD6AAAAAAEAAAAAQAAAAAAAAAAAAA88AAAAAIAAAAAAAA9QAAAJxAAAAADAAAAAAAAZFAAACd0AAAABAAAAAAAAIwAAAAQBAA=</bootstrapInfo>
<bootstrapInfo id="PA3" profile="named">AAAAe2Fic3QAAAAAAAAAAgAAAAPoAAAAAAAAm9UAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAAQBAAAANWFmcnQAAAAAAAAD6AAAAAACAAAAAQAAAAAAAAAAAAAnEAAAAAQAAAAAAAB1gAAAJkgA</bootstrapInfo>
<media streamId="PV4" url="TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAPPV4" bitrate="351" width="384" height="216" bootstrapInfoId="PV4">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAXUo9cKPXCgAFd2lkdGgAAAAAAAAAAAAABmhlaWdodAAAAAAAAAAAAAAMdmlkZW9jb2RlY2lkAgAESDI2NAAKYXZjcHJvZmlsZQBAWQAAAAAAAAAIYXZjbGV2ZWwAQDUAAAAAAAAADnZpZGVvZnJhbWVyYXRlAP/4AAAAAAAAAAl0cmFja2luZm8KAAAAAQMABmxlbmd0aAAAAAAAAAAAAAAJdGltZXNjYWxlAECPQAAAAAAAAAhsYW5ndWFnZQIAA2VuZwAACQAACQ==</metadata>
</media>
<media streamId="PV5" url="TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAPPV5" bitrate="226" width="512" height="288" bootstrapInfoId="PV5">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAXUo9cKPXCgAFd2lkdGgAAAAAAAAAAAAABmhlaWdodAAAAAAAAAAAAAAMdmlkZW9jb2RlY2lkAgAESDI2NAAKYXZjcHJvZmlsZQBAU0AAAAAAAAAIYXZjbGV2ZWwAQD4AAAAAAAAADnZpZGVvZnJhbWVyYXRlAP/4AAAAAAAAAAl0cmFja2luZm8KAAAAAQMABmxlbmd0aAAAAAAAAAAAAAAJdGltZXNjYWxlAECPQAAAAAAAAAhsYW5ndWFnZQIAA2VuZwAACQAACQ==</metadata>
</media>
<media streamId="PV8" url="TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAPPV8" bitrate="661" width="704" height="396" bootstrapInfoId="PV8">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAXUo9cKPXCgAFd2lkdGgAAAAAAAAAAAAABmhlaWdodAAAAAAAAAAAAAAMdmlkZW9jb2RlY2lkAgAESDI2NAAKYXZjcHJvZmlsZQBAU0AAAAAAAAAIYXZjbGV2ZWwAQD4AAAAAAAAADnZpZGVvZnJhbWVyYXRlAP/4AAAAAAAAAAl0cmFja2luZm8KAAAAAQMABmxlbmd0aAAAAAAAAAAAAAAJdGltZXNjYWxlAECPQAAAAAAAAAhsYW5ndWFnZQIAA2VuZwAACQAACQ==</metadata>
</media>
<media streamId="PV10" url="TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAPPV10" bitrate="1269" width="960" height="540" bootstrapInfoId="PV10">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAXUo9cKPXCgAFd2lkdGgAAAAAAAAAAAAABmhlaWdodAAAAAAAAAAAAAAMdmlkZW9jb2RlY2lkAgAESDI2NAAKYXZjcHJvZmlsZQBAU0AAAAAAAAAIYXZjbGV2ZWwAQD8AAAAAAAAADnZpZGVvZnJhbWVyYXRlAP/4AAAAAAAAAAl0cmFja2luZm8KAAAAAQMABmxlbmd0aAAAAAAAAAAAAAAJdGltZXNjYWxlAECPQAAAAAAAAAhsYW5ndWFnZQIAA2VuZwAACQAACQ==</metadata>
</media>
<media streamId="PA3" url="TearsOfSteel_Teaser_1920x1080_2.0EN_25_XDCAM_REWRAPPA3" bitrate="47" bootstrapInfoId="PA3">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAWQYUeuFHrgAMYXVkaW9jb2RlY2lkAgAEbXA0YQAGYWFjYW90AAAAAAAAAAAAAA9hdWRpb3NhbXBsZXJhdGUAQOdwAAAAAAAADWF1ZGlvY2hhbm5lbHMAQAAAAAAAAAAACXRyYWNraW5mbwoAAAABAwAGbGVuZ3RoAAAAAAAAAAAAAAl0aW1lc2NhbGUAQI9AAAAAAAAACGxhbmd1YWdlAgADZW5nAAAJAAAJ</metadata>
</media>
</manifest>

任何建议/协助都表示赞赏。

1 个答案:

答案 0 :(得分:1)

  

我正在研究生成包含相关内容的输出xml   存在以下属性的引导程序和媒体节点,   PV4,PV5,PV8,PV10和PA3

AFAICT,这应该这样做:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:f4m="http://ns.adobe.com/f4m/1.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

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

<xsl:template match="f4m:bootstrapInfo[not(@id='PV4' or @id='PV5' or @id='PV8' or @id='PV10' or @id='PA3')]"/>
<xsl:template match="f4m:media[not(@streamId='PV4' or @streamId='PV5' or @streamId='PV8' or @streamId='PV10' or @streamId='PA3')]"/>

</xsl:stylesheet>
相关问题