我记得在Visual Basic中存在一个函数Split()
,它将字符串除以特定字符。
现在我正在用XSLT编程,我想使用类似的函数,但我不太了解XSLT。
在附件中,我输入了xml代码:
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<VICINITY>TARANTO</VICINITY>
<ITA_LIGHT_NAME>Porto industriale esterno;Meda elastica</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<VICINITY>TARANTO</VICINITY>
<ITA_LIGHT_NAME>Porto industriale esterno;Meda elastica</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<VICINITY>TARANTO</VICINITY>
<ITA_LIGHT_NAME>Porto industriale esterno;Meda elastica</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<VICINITY>TARANTO</VICINITY>
<ITA_LIGHT_NAME>MAR GRANDE;Porto industriale interno;Accesso al IV sporgente;All 341;Radice IV sporgente (Ant)</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<VICINITY>TARANTO</VICINITY>
<ITA_LIGHT_NAME>MAR GRANDE;Porto industriale interno;Accesso al IV sporgente;All 341;Circa 700 m a NNW dell'Ant(Post)</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
我希望看到:
TARANTO
<br />
Porto industriale esterno
-Meda elastica
-Meda elastica
-Meda elastica
<br />
Mar Grande
-Porto industriale interno
--Accesso al IV sporgente
---All 341
----Radice IV sporgente (Ant)
----Circa 700 m a NNW dell'Ant(Post)
<br />
作为<ITA_LIGHT_NAME>
树,使用类似于 Split()
但在 XSLT 中的函数。谢谢。
查看所需的输出,这不仅仅是拆分的问题......
尽管如此,按照马修格林的建议编写模板还是可行的。但是,如果您可以访问 Java,调用外部 Java 函数会使其变得容易得多。
public String splitString(String myStringToSplit, String delimiter)
{
String[] mySplittedString = myStringToSplit.split(delimiter);
String returnString = "";
for(int i = 0; i < mySplittedString.length; i++)
{
returnString += mySplittedString[i] + "<br/>";
}
return returnString;
}
在 XSLT 中,在声明您的 java 命名空间之后:
<xsl:value-of select="namespace:splitString('your;String;To;Split', ';')"/>
这与 XSLT 1.0 完全兼容。
现在为了获得您想要的输出,再次由于这对于 XSLT 来说太复杂了,我会解析整个 XML 并将每个元素的特定字符分隔的每个节点连接成一个字符串,而不是将其发送到 Java 函数,这将为我返回树。这样,可以更轻松地检查已经存在的VICINITY等,并确保您没有重复的节点。