我仍然是XSLT的初學者,但我手頭有一項艱鉅的任務。複雜的XSL轉換
我有一個非xml文件,需要進行轉換。該文件的格式A S如下:
type1
type1line1
type1line2
type1line3
type2
type2line1
type2line2
type3
type3line1
type3line2
類型(type1, type2, ...
)使用不具有特定的順序某些代碼指定。下面的每種類型都有多個line
。
所以,我需要轉換這個文件,但問題是,對於每個type
我必須爲它的每個底層線做不同的轉換。
現在,我可以逐行讀取字符串,並確定一個新類型已經開始,但我不知道如何設置一個標誌(指示類型)在底層行中使用它。
這是我現在所擁有的:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0">
<xsl:param name="testString" as="xs:string">
type1
line1
line2
type1
line1
</xsl:param>
<xsl:template match="/">
<xsl:call-template name="main">
<xsl:with-param name="testString" select="$testString"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="main">
<xsl:param name="testString"/>
<xsl:variable name="iniFile" select="$testString"/>
<config>
<xsl:analyze-string select="$iniFile" regex="\n">
<xsl:non-matching-substring>
<item>
<xsl:choose>
<xsl:when test="starts-with(., 'type1')">
<!-- do a specific transformation-->
</xsl:when>
<xsl:when test="starts-with(., 'type2')">
<!-- do another transformation-->
</xsl:when>
</xsl:choose>
</item>
</xsl:non-matching-substring>
</xsl:analyze-string>
</config>
</xsl:template>
</xsl:stylesheet>
關於如何解決這個問題的任何想法。
你一定要明白XSLT是爲了轉換** XML文件**? ;) – 2010-06-30 13:13:50
將此問題標記爲XSLT2以避免像Niels'這樣的評論。 @Niels van der Rest:XSLT2可以處理未解析的文檔。 – 2010-06-30 13:28:57
@Alejandro感謝您糾正我,我沒有意識到這一點:) – 2010-06-30 13:34:35