使用xslt传递xml标签的属性值

时间:2014-01-23 04:47:04

标签: c# html xml xslt

我是xslt的新手。我有以下xml和xslt,我需要使用XslCompiledTranform转换为html。 我有以下XML

<ref-list id="RL10">
 <label>
  <bold>7.0</bold>
 </label>
 <title>
  <bold>References</bold>
 </title>
  <ref id="R66" content-type="references">
   <label>2</label>
    <mixed-citation publication-type="book">
     <person-group person-group-type="author">
      <name>
       <surname>Chown,</surname>
       <given-names>Bill</given-names>
      </name>
     </person-group>, and
     <person-group person-group-type="author">
      <name>
       <surname>Lange</surname>
       <given-names>Michelle</given-names>
      </name>
     </person-group>. &#x201C;
     <source>Modernizing System Development: Requirements&#x002d;Based, Model&#x002d;Driven Design, Implementation and Test</source>.&#x201D;
     <publisher-name>Mentor Graphics Corp., ERTS</publisher-name>,
     <month>Feb.</month>
     <year>2012</year>.
    </mixed-citation></ref>
    <ref id="R67" content-type="references">
     <label>3</label>
      <mixed-citation publication-type="journal">
       <person-group person-group-type="author">
        <name>
         <surname>Blyler,</surname>
         <given-names>John</given-names>
        </name>
       </person-group>. &#x201C;
       <article-title>Model&#x002d;Driven Development Is Key to Low Power</article-title>.&#x201D; 
       <source>Chip Design Magazine &#x002d; JB&#x2019;s Circuit</source>,
       <month>Dec.</month>
       <day>6</day>,
       <year>2012</year>.
       <uri xlink:href="http://www.chipdesignmag.com/blyler/2012/12/06/model-driven-development-key-to-low-power/">http:&#x002F;&#x002F;www.chipdesignmag.com&#x002F;blyler&#x002F;2012&#x002F;12&#x002F;06&#x002F;model&#x002d;driven&#x002d;development&#x002d;key&#x002d;to&#x002d;low&#x002d;power&#x002F;</uri>.
      </mixed-citation>
     </ref>
 </ref-list>

我有以下xslt

<xsl:template match="ref-list/ref">
  <html>
   <head></head>
   <body>
    <xsl:apply-templates/>
   </body>
  </html>
</xsl:template>

<xsl:template match="ref-list/ref">
  <p>
    <xsl:value-of select="label"/>
    <xsl:for-each select="mixed-citation">
          <xsl:for-each select="person-group/name">
            <xsl:value-of select="given-names"/>
            <xsl:value-of select="surnames"/>
          </xsl:for-each>
      <xsl:text>,</xsl:text>
      <xsl:value-of select="source"/>
      <xsl:text>,</xsl:text>
      <xsl:value-of select="publisher-name"/>
      <xsl:text>,</xsl:text>
      <xsl:value-of select="day"/>
      <xsl:text>,</xsl:text>
      <xsl:value-of select="month"/>
      <xsl:text>,</xsl:text>
      <xsl:value-of select="year"/>
      <xsl:text>,</xsl:text>
      <xsl:for-each select="uri">
        <xsl:value-of select="."/>
      </xsl:for-each>
      <xsl:text>,</xsl:text>
      <xsl:value-of select="article-title"/>
      <xsl:text>,</xsl:text>
      <xsl:value-of select="publisher-loc"/>
      <xsl:text>,</xsl:text>
      <xsl:value-of select="volume"/>
      <xsl:text>,</xsl:text>
      <xsl:value-of select="issue"/>
    </xsl:for-each>
  </p>
</xsl:template>

我必须使用xslt将我的xml转换为html。但是在转换时,它说'xlink'是一个未声明的前缀。我不知道如何解析它。 我需要解析具有xlink作为其属性的uri标记的输出。我不知道如何解析任何xml标记的任何属性。任何人都可以解释如何解析任何具有其属性的xml标签吗?

1 个答案:

答案 0 :(得分:1)

它被称为命名空间。 xml的根标记应包含

xmlns:xlink="http://www.w3.org/1999/xlink

如果不是,每次在标记中添加xlink:href时都应该包括它。