我仍然是 XSLT 的初学者,但我手头有一项艰巨的任务。
我有一个需要转换的非 xml 文件。文件格式如下:
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>
关于如何解决问题的任何想法。