相关疑难解决方法(0)

使用XSLT将常规文本文件转换为XML

我有一个看起来像这样的文本文件:

XXX^YYYY^AAAAA^XXXXXX^AAAAAA....
Run Code Online (Sandbox Code Playgroud)

使用插入符号(^)分隔字段,我的假设是:

第一个字段= NAME
第二
个字段= 姓氏第三个字段=地址

等等..

我想使用xsl(XSLT)将其转换为有效的XML.如:

<name>XXX</name>
<l_name>YYYY</l_name>
Run Code Online (Sandbox Code Playgroud)

我知道可以使用Perl轻松完成,但如果可能的话,我需要使用XSLT.

xml xslt

9
推荐指数
1
解决办法
2万
查看次数

使用未解析的文本将文本XSL转换为XML:需要更多深度

我的格式很好(我不想复制所有数据):

StartThing
Size Big
Colour Blue
coords 42, 42
foo bar
EndThing
StartThing
Size Small
Colour Red
coords 29, 51
machin bidule
EndThing
<!-- repeat a few thousand times-->
Run Code Online (Sandbox Code Playgroud)

我有以下XSL,我使用XSLTParse文本文件修改

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:param name="text-encoding" as="xs:string" select="'iso-8859-1'"/>
    <xsl:param name="text-uri" as="xs:string" select="'unparsed-text.txt'"/>

    <xsl:template name="text2xml">
        <xsl:variable name="text" select="unparsed-text($text-uri, $text-encoding)"/>
        <xsl:analyze-string select="$text" regex="(Size|Colour|coords) (.+)">    
            <xsl:matching-substring>
                <xsl:element name="{(regex-group(1))}">
                    <xsl:value-of select="(regex-group(2))"/>
                </xsl:element>          
            </xsl:matching-substring>
        </xsl:analyze-string>
    </xsl:template>

    <xsl:template match="/">
        <xsl:call-template name="text2xml"/>    
    </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

它可以很好地将对解析成元素和值.它给了我这个输出:

<?xml version="1.0" encoding="UTF-8"?> …
Run Code Online (Sandbox Code Playgroud)

xslt xslt-2.0

3
推荐指数
1
解决办法
3074
查看次数

XSLT 2.0:将纯文本中的表示法转换为svg

我不熟悉不同格式之间的转换.我的目标是将符号从纯文本格式的工具包转移到svg.一个简单的例子是我有一个橙色椭圆,符号就像这样(x和y是坐标系,所以0和0表示椭圆在中间):

GRAPHREP
PEN color:$000000 w:2pt
FILL color:$ff7f00
ELLIPSE x:0pt y:0pt rx:114pt ry:70pt
Run Code Online (Sandbox Code Playgroud)

我想要的输出将是一个像这样的svg代码(cx和cy坐标是随机选择的例子):

<svg width="400" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
 <g>
  <ellipse fill="#ff7f00" stroke="#000000" stroke-width="2" stroke-dasharray="null" stroke-linejoin="null" stroke-linecap="null" cx="250" cy="250" id="svg_1" rx="114" ry="70"/>
 </g>
</svg>
Run Code Online (Sandbox Code Playgroud)

我发现这两个线程Parse文本文件使用XSLTXSL转换文本到XML使用未解析的文本:需要更深入的 地方,他们使用XSLT 2.0和未解析的text()函数和正则表达式将纯文本转换为xml.在我的例子中,如何获得像ELLIPSE这样的命令(是一个可以识别所有大写单词的正则表达式?)和参数(无论如何都可以从纯文本中获取Xpath?)?在XSLT 2.0中是一个很好的实现,还是我应该寻找另一种方法?任何帮助,将不胜感激!

regex xslt xpath svg xslt-2.0

3
推荐指数
1
解决办法
486
查看次数

标签 统计

xslt ×3

xslt-2.0 ×2

regex ×1

svg ×1

xml ×1

xpath ×1