J'utilise XSLT1.0 pour transformer mon XML.Vérification du caractère de départ devrait être « T » et suivant 3 caractère devrait être le numéro dans xslt
je rencontre ci-dessous Tabs.xml
<?xml version="1.0"?>
<tcm:ListItems xmlns:tcm="http://www.tridion.com/ContentManager/5.0" ID="tcm:481-87289-4" Managed="68">
<tcm:Item ID="tcm:481-596728-64" Title="T000. Brisbane" pageURL="/australia/brisbane/index.aspx" componentTitle="Overview"/>
<tcm:Item ID="tcm:481-598671-64" Title="Tabs XML"/>
<tcm:Item ID="tcm:481-598672-64" Title="T030 Special Offers" pageURL="/australia/brisbane/specialoffers.aspx" componentTitle="Special Offers"/>
<tcm:Item ID="tcm:481-598673-64" Title="020 Flight Schedules" pageURL="/australia/brisbane/flightschedules.aspx" componentTitle="Flight Schedules"/>
<tcm:Item ID="tcm:481-598674-64" Title="T010 Guide" pageURL="/australia/brisbane/guide.aspx" componentTitle="Guide"/>
</tcm:ListItems>
Et je me sers ci-dessous xslt pour le transformer!
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:tcm="http://www.tridion.com/ContentManager/5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:em="http://www.emirates.com/tridion/schemas" xmlns:tcmse="http://www.tridion.com/ContentManager/5.1/TcmScriptAssistant" exclude-result-prefixes="em xlink tcmse tcm">
<xsl:output method="xml" version="1.0" encoding="UTF-16" indent="yes"/>
<xsl:template match="tcm:ListItems">
<list type="Tabs">
<xsl:apply-templates select="tcm:Item">
<xsl:sort select="@Title" order="ascending"/>
</xsl:apply-templates>
</list>
</xsl:template>
<!-- add field values for each item-->
<xsl:template match="tcm:Item">
<xsl:if test="@componentTitle != ''">
<xsl:element name="tab">
<xsl:attribute name="id">
<xsl:value-of select="substring-after(@ID, '-')"/>
</xsl:attribute>
<xsl:attribute name="title">
<xsl:value-of select="@componentTitle"/>
</xsl:attribute>
<xsl:attribute name="url">
<xsl:value-of select="@pageURL"/>
</xsl:attribute>
</xsl:element>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Auparavant, il fonctionnait très bien, mais maintenant il y a un autre changement nécessaire, maintenant je dois les noeuds à rendre dont @title commence par « T » ou « t », ainsi que 3 suivant le caractère devrait être numéro par exemple dans ci-dessus xml "Calendrier de vol" ne devrait pas venir, je suppose que j'ai juste besoin d'écrire un de plus et de la condition en <xsl:if test="@componentTitle != ''">
,
S'il vous plaît suggérer! comment ça peut être fait!
Bonne question (1). Voir ma réponse pour une expression de doublure simplifiée et pour la façon standard de vérifier si une chaîne contient un nombre. :) –
Bonne question (+1). Et voir mon meilleur one-liner. – dolmen