【问题标题】:XSL need help get valueXSL 需要帮助获得价值
【发布时间】:2014-04-14 15:34:28
【问题描述】:

我是 XSLT 的新手,正在尝试获取以下信息。

我有一个如下所示的 XML:

<?xml version="1.0" encoding="utf-8"?>
<soa:Label identifier="624e35e5-f7fe-49d2-b7d6-669543106161" name="Metadata Label" description="This label holds two fields, the duration and the file name of a media file.  It is intended to be populated using Identify." instance="1ab96760-b2f2-439d-8c26-ef204236b3ec" signature="00000000-0000-0000-0000-000000000000" xmlns:soa="urn:telestream.net:soa:core">
  <soa:Category identifier="007cf696-0ee3-4bbf-8d1a-5fc90b75ae82" name="Video" order="0" />
  <soa:Category identifier="f6754a00-a901-4cfe-b500-737506a67da5" name="Audio" order="0" />
  <soa:Parameter type="timecode" identifier="f74643ba-085e-4a89-8362-a222720a4c4e" bindable="True" name="Duration" enabled="true" disableable="false">
    00:00:00:00@25<soa:Default>z00:00:00:00@25</soa:Default>
    <soa:IsRequired>false</soa:IsRequired>
  </soa:Parameter>
  <soa:Parameter type="string" identifier="72584048-c72f-46c3-9dd7-f4da519bfb70" bindable="True" name="File Name" enabled="true" disableable="false">
    Default.mpg<soa:Default>Default.mpg</soa:Default>
    <soa:Option>Default.mpg</soa:Option>
    <soa:IsRequired>false</soa:IsRequired>
  </soa:Parameter>
  <soa:Parameter type="int32" identifier="5cf311fc-2ef6-4886-a8db-1cb33b6bc6f0" bindable="True" name="Video Width" category="007cf696-0ee3-4bbf-8d1a-5fc90b75ae82" enabled="true" disableable="false">
    720<soa:Default>z720</soa:Default>
    <soa:IsRequired>false</soa:IsRequired>
  </soa:Parameter>
  <soa:Parameter type="int32" identifier="3fae6a7b-6a06-4d03-b2ab-65974ddcb6b1" bindable="True" name="Video Height" category="007cf696-0ee3-4bbf-8d1a-5fc90b75ae82" enabled="true" disableable="false">
    576<soa:Default>z576</soa:Default>
    <soa:IsRequired>false</soa:IsRequired>
  </soa:Parameter>
  <soa:Parameter type="int32" identifier="35ab87a9-535d-4ae2-b280-4cad204bb2a1" bindable="True" name="Audio Channels" category="f6754a00-a901-4cfe-b500-737506a67da5" enabled="true" disableable="false">
    2<soa:Default>2</soa:Default>
    <soa:IsRequired>false</soa:IsRequired>
  </soa:Parameter>
  <soa:Parameter type="string" identifier="19336ecc-9e6c-4f7e-ab40-18d95a5546f3" bindable="True" name="Video Codec" category="007cf696-0ee3-4bbf-8d1a-5fc90b75ae82" enabled="true" disableable="false">
    dvpal<soa:Default>dvpal</soa:Default>
    <soa:IsRequired>false</soa:IsRequired>
  </soa:Parameter>
  <soa:Parameter type="int32" identifier="16bb6aac-93b0-4074-b4bb-a0b0ded92940" bindable="True" name="Audio Bitrate" category="f6754a00-a901-4cfe-b500-737506a67da5" enabled="true" disableable="false">
    192<soa:Default>192</soa:Default>
    <soa:IsRequired>false</soa:IsRequired>
  </soa:Parameter>
  <soa:Parameter type="string" identifier="7e50585e-e30f-43d3-be49-9a488e2531f2" bindable="True" name="Audio Codec" category="f6754a00-a901-4cfe-b500-737506a67da5" enabled="true" disableable="false">
    pcm<soa:Default>pcm</soa:Default>
    <soa:IsRequired>false</soa:IsRequired>
  </soa:Parameter>
  <soa:Parameter type="int32" identifier="67aa5f6f-60fe-4d2a-a5f0-caca31ebe088" bindable="True" name="Audio Sample Rate" category="f6754a00-a901-4cfe-b500-737506a67da5" enabled="true" disableable="false">
    48<soa:Default>48</soa:Default>
    <soa:IsRequired>false</soa:IsRequired>
  </soa:Parameter>
</soa:Label>

我想得到这个

   <Filename>Default.mpg</Filename>
   <Duration>00:00:00:00</Duration>
   <Video_Width>720</Video_Width>
   <Video_Height>576</Video_Height>

但我需要的值是第一个

例如在:

<soa:Parameter type="string" identifier="72584048-c72f-46c3-9dd7-f4da519bfb70" bindable="True" name="File Name" enabled="true" disableable="false">Default.mpg<soa:Default>...

我需要这个Default.mpg 作为Filename 标签。

目前我只成功获得了持续时间值:

<xsl:value-of select="substring-before(soa:Label/soa:Parameter,'@')"/>

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    我猜你需要这样的东西:

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soa="urn:telestream.net:soa:core" exclude-result-prefixes="soa">
    
    <xsl:output method="xml" indent="yes"/>
    <xsl:strip-space elements="*"/>
    
    <xsl:template match="/">
        <root>
            <Filename>
                <xsl:value-of select="soa:Label/soa:Parameter[@name='File Name']/text()[1]"/>
            </Filename>
            <Duration>
                <xsl:value-of select="substring-before(soa:Label/soa:Parameter[@name='Duration']/text()[1],'@')"/>
            </Duration>
            <Video_Width>
                <xsl:value-of select="soa:Label/soa:Parameter[@name='Video Width']/text()[1]"/>
            </Video_Width>
            <Video_Height>
                <xsl:value-of select="soa:Label/soa:Parameter[@name='Video Height']/text()[1]"/>
            </Video_Height>
        </root>
    </xsl:template>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      相关资源
      最近更新 更多