从XML数据创建HTML无序列表

时间:2011-02-26 15:20:14

标签: xml xslt umbraco

我有这个XML:

<Tekstside id="1081" level="3" nodeName="Test" urlName="test">
  <umbracoRedirect /> 
  <overskrift>Test</overskrift> 
  <tekst></tekst> 
  <sidensTitel /> 
  <sidensBeskrivelse /> 
  <sidensNgleord /> 
- <Faktaboks id="1113" level="4" nodeName="Det her virker" urlName="det-her-virker">
  <umbracoNaviHide>1</umbracoNaviHide> 
- <fordele>
- <values>
  <value>Ingen emission</value> 
  <value>Det virker bare</value> 
  <value>Det er top nice</value> 
  <value>Det er bare fedt</value> 
  <value>Udstødnings</value> 
  <value /> 
  </values>
  </fordele>
- <ulemper>
- <values>
  <value>Giver sygdom</value> 
  <value>Er farligt</value> 
  <value /> 
  </values>
  </ulemper>
  </Faktaboks>
  </Tekstside>

我想在Umbraco中使用XSLT将“fordele”值和“ulemper”值放入unorderes列表中:

<div class="fanda">
    <ul class="for">
      <li>Købsprisen</li>
    </ul>
    <ul class="against">
      <li>Kortere servicerings interval pga. additivet fylder med i filteret.</li>
      <li>Der kan forekomme meget varieret modtryk, isærpå biler med lav - udstødningstemperatur.</li>
      <li>Udgifter til Additiv - typisk fra 400 - 600 kr. pr. liter.</li>
      <li>Kan ikke klare alle kørselsmønstre</li>
    </ul>
  </div>

我试过这个XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [
  <!ENTITY nbsp "&#x00A0;">
]>
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxml="urn:schemas-microsoft-com:xslt"
  xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon"
  xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath"
  xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings"
  xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets"
  exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets">

    <xsl:output method="xml" omit-xml-declaration="yes"/>
    <xsl:param name="currentPage"/>

<xsl:template match="/">
    <ul>
        <xsl:apply-templates select="$currentPage/*[@isDoc]" />
    </ul>
</xsl:template>

<xsl:template match="fordele">
    <li>
            <xsl:value-of select="fordele" />
    </li>
</xsl:template>

<xsl:template match="*[umbracoNaviHide = 0]" />

</xsl:stylesheet>​

但它不起作用..

1 个答案:

答案 0 :(得分:4)

此转化:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="fordele|ulemper">
  <ul>
   <xsl:apply-templates/>
  </ul>
 </xsl:template>

 <xsl:template match="value[normalize-space()]">
  <li><xsl:value-of select="."/></li>
 </xsl:template>

 <xsl:template match="text()"/>
</xsl:stylesheet>

应用于提供的XML文档(更正为删除' - '字符):

<Tekstside id="1081" level="3" nodeName="Test" urlName="test">
    <umbracoRedirect />
    <overskrift>Test</overskrift>
    <tekst></tekst>
    <sidensTitel />
    <sidensBeskrivelse />
    <sidensNgleord />
    <Faktaboks id="1113" level="4" nodeName="Det her virker" urlName="det-her-virker">
        <umbracoNaviHide>1</umbracoNaviHide>  - 
        <fordele>
            <values>
                <value>Ingen emission</value>
                <value>Det virker bare</value>
                <value>Det er top nice</value>
                <value>Det er bare fedt</value>
                <value>Udstødnings</value>
                <value />
            </values>
        </fordele>
        <ulemper>
            <values>
                <value>Giver sygdom</value>
                <value>Er farligt</value>
                <value />
            </values>
        </ulemper>
    </Faktaboks>
</Tekstside>

会产生想要的正确结果:

<ul>
   <li>Ingen emission</li>
   <li>Det virker bare</li>
   <li>Det er top nice</li>
   <li>Det er bare fedt</li>
   <li>Udstødnings</li>
</ul>
<ul>
   <li>Giver sygdom</li>
   <li>Er farligt</li>
</ul>