xsl:element中用于XSLT的变量值

时间:2016-06-13 16:28:20

标签: xml xslt

我目前正在尝试编写一个XSLT,我可以使用我之前使用原始XML中的值定义的变量

我的XSLT示例:

<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:content="urn:cablelabs:md:xsd:content:3.0" 
    xmlns:offer="urn:cablelabs:md:xsd:offer:3.0" 
    xmlns:title="urn:cablelabs:md:xsd:title:3.0"
    xmlns="urn:cablelabs:md:xsd:core:3.0"
    xsi:schemaLocation="urn:cablelabs:md:xsd:core:3.0 MD-SP-CORE-I02.xsd urn:cablelabs:md:xsd:offer:3.0"
    version="1.0" >


<xsl:output method="xml" version="1.0" encoding="UTF-8" media-type="text/xml" indent="yes"/>
<xsl:output method ="xml" doctype-system="ADI.DTD"/>
<xsl:strip-space elements="*"/>


<!-- Define Variables -->
<!-- uriID = ProviderID/AssetDiscriminator/AssetId -->
<xsl:variable name="uriIdProvider" select="'indemand.com'"/>
<xsl:variable name="episodeTitle" select="'//PACKAGEDETAILS/VERSION_SERIES_TITLE'"/>

<!-- Build output Xml in CableLabs Format-->
<xsl:template match="/">


<ADI3>
<xsl:copy-of select="document('')/*/@xsi:schemaLocation"/>
<xsl:comment> Assets for the Series </xsl:comment>

<Asset
uriId="{$uriIdProvider}/Title/"
xsi:type="title:TitleType">

<xsl:element name="title:TitleBrief">
    <xsl:value-of select="{$episodeTitle}"/>
</xsl:element>

</Asset>


</ADI3>
</xsl:template>
</xsl:stylesheet>

我的问题在于我最终要尝试定义xsl:element标题:TitleBrief以及之前声明的变量episodeTitle。

我希望我的输出看起来像是:

<Asset uriId="indemand.com/Title/" xsi:type="title:TitleType">
  <title:TitleBrief>Haunting, A (S8)</title:TitleBrief>
</Asset>

有人可以帮我弄清楚我哪里出错吗?

1 个答案:

答案 0 :(得分:0)

  1. 而不是:

    <xsl:value-of select="{$episodeTitle}"/>
    

    使用:

    <xsl:value-of select="$episodeTitle"/>
    
  2. (我猜)而不是:

    <xsl:variable name="episodeTitle" select="'//PACKAGEDETAILS/VERSION_SERIES_TITLE'"/>
    

    使用:

    <xsl:variable name="episodeTitle" select="//PACKAGEDETAILS/VERSION_SERIES_TITLE"/>