2015-04-30 2 views
1

Привет У меня есть этот XML-файл нижеXML XSLT IDREF тег

XML

<geo> 
    <state id="georgia"> 
    <capital idref="atlanta"/> 
    <citiesin idref="atlanta"/> 
    <citiesin idref="columbus"/> 
    <code>30294</code> 
    </state> 

    <state id="florida"> 
    <capital idref="miami"/> 
    <citiesin idref="atlanta"/> 
    <citiesin idref="orlando"/> 
    <code>12345</code> 
    </state> 

Я знаю, чтобы получить данные для почтового индекса в моем файле XML я просто сделать это ниже, и она будет распечатать все почтовые индексы в этом XML-файле. Как я могу сделать то же самое, чтобы получить капитал или города, потому что у него есть idref, и я попытался сделать это так же, как и с почтовым индексом, но он не работает. Я не уверен, как это сделать. Любая помощь приветствуется.

XSL

<xsl:template match="state"> 
<p> 
<xsl:apply-templates select="code"/> 

</p> 
</xsl:template> 

<xsl:template match="code"> 
    Zip Code: <span style="color:#ff0000"> 
<xsl:value-of select="."/></span> 
<br /> 
</xsl:template> 

ответ

0

попробовать что-то вроде этого:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 

    <xsl:strip-space elements="*"/> 
    <xsl:output indent="yes"/> 

    <xsl:template match="state"> 
     <p> 
      <xsl:apply-templates select="code"/> 
      <xsl:apply-templates select="capital"/> 
      <xsl:text>Cities: </xsl:text> 
      <xsl:for-each select="citiesin/@idref"> 
       <xsl:if test="position() &gt; 1"> 
        <xsl:text>, </xsl:text> 
       </xsl:if> 
       <span><xsl:value-of select="."/></span> 
      </xsl:for-each> 
     </p> 
    </xsl:template> 

    <xsl:template match="code"> 
     <xsl:text>Zip Code: </xsl:text> 
     <span style="color:#ff0000"> 
      <xsl:value-of select="."/> 
     </span> 
     <br /> 
    </xsl:template> 

    <xsl:template match="capital"> 
     <span><xsl:value-of select="concat('Capital: ', @idref)"/></span><br/> 
    </xsl:template> 

</xsl:stylesheet> 
+0

Im пытается получить все города в одной строке и столице для отображения на новой строке. Я получил все города в одной строке, работая, заменив перерыв запятой и стилем диапазона, но как я могу отобразить капитал на новой строке? Я попытался скопировать тот же самый код кода, который вы использовали выше, но я почему-то получаю сообщение об ошибке. – Noobie

+0

Я изменил свой ответ. –

1

"" в вашем шаблоне выше выбирается текст. Вы просто хотите получить значение атрибута. Вот один из шаблонов:

<xsl:template match="capital"> 
    Capital: <span style="color:#ff0000"> 
<xsl:value-of select="@idref"/></span> 
<br /> 
</xsl:template> 
Смежные вопросы