2014-01-23 5 views
0

Я новичок в xslt. У меня есть следующие xml и xslt, которые мне нужно преобразовать в html с помощью XslCompiledTranform. я следующий XMLпередать атрибут значения тегов xml с помощью xslt

<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> 

Я должен преобразовать мой XML в HTML с использованием XSLT. Но при преобразовании он говорит, что «xlink» является необъявленным префиксом. Я не знаю, как его разобрать. Мне нужен вывод, который обрабатывает тэг uri, имеющий xlink как его атрибут. Я не знаю, как разбирать любой атрибут любого тега xml. Может ли кто-нибудь объяснить, как анализировать любые теги xml, имеющие свои атрибуты?

+0

Смотрите эти ресурсы: http://stackoverflow.com/questions/8352947/passing-xml-attribute-value-to-html-atrribute-value-using-xslt Http: // stackoverflow.com/questions/13090401/using-xsl-to-pass-an-xml-attribute-as-an-id-into-html http://stackoverflow.com/questions/6050044/how-do -i-pass-a-xml-attribute-to-xslt-parameter –

+0

Я не знаю, где я иду не так, но все же я получаю ту же ошибку. Ошибка говорит, что xlink не объявлен в Xml. Есть способ исключить префиксы, но я не знаю, как это сделать. Может быть, это может решить мою проблему. Есть ли способ в xslt, где я могу исключить префиксы i.e. xlink? – user

+1

Это называется пространством имен. Корневой тег вашего xml должен содержать 'xmlns: xlink =" http://www.w3.org/1999/xlink ". Если нет, то он должен включаться каждый раз, когда вы добавляете в свой тег 'xlink: href'. –

ответ

1

Это пространство имен. Корневой тег вашего XML должен содержать

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

Если не он должен быть включен каждый раз вы добавляете xlink:href в вас тег.

+0

, но после этого пространства имен как Я получаю эту ошибку " : "символ, шестнадцатеричные значения 0 * 3A, не могут быть включены в имя. Строка 1, позиция 43. – user

+0

не декларация xml, тег после этого является корневым тегом. –

+0

Хорошо. Спасибо .. Это сработало. – user

Смежные вопросы