Я все еще новичок в XSLT, но у меня сложная задача.Комплекс XSL Transformation
У меня есть файл, отличный от xml, который необходимо преобразовать. Формат файла является 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-файлов **? ;) –
Отметьте этот вопрос как XSLT2, чтобы избежать комментариев, таких как Niels. @Niels van der Rest: XSLT2 может манипулировать непроверенными документами. – 2010-06-30 13:28:57
@Alejandro Спасибо за исправление меня, я не знал об этом :) –