невозможно прочитать файл .properties в xslt с помощью unparsed-text () - PullRequest
0 голосов
/ 11 июня 2019

Когда я пытаюсь прочитать файл err.properties в vText

<xsl:variable name="errorMessages">
    <xsl:variable name="vText"
        select="unparsed-text('./err.properties','UTF-8')" />
    <ixbrlErrors>

        <xsl:analyze-string select="$vText"
            regex="(ix\d\d)\s?=\s?(.+)\n?">
            <xsl:matching-substring>
                <xsl:element name="{regex-group(1)}">
                    <xsl:value-of select="normalize-space(regex-group(2))"></xsl:value-of>
                </xsl:element>
            </xsl:matching-substring>
        </xsl:analyze-string>
    </ixbrlErrors>

</xsl:variable>

, саксон дает мне следующую ошибку ..

Error on line 42 of validateIXBRLXslt.xsl:
  XTDE1200: Failed to read input file
  file:/D:/OIM_JSON_WS/BUSHCHAT_TRUNK_CERTIFIED/bushchat/target/classes/IXBRL/err.properties
  (java.nio.charset.MalformedInputException): Input length = 1
  in variable errorMessages 
  at xsl:call-template name="AllStartsFromHere" (file:/D:/OIM_JSON_WS/BUSHCHAT_TRUNK_CERTIFIED/bushchat/target/classes/IXBRL/validateIXBRLXslt.xsl#57)
Transformation failed: Run-time errors were reported

строка 42 - это регулярное выражение = "(ix \d \ d) \ s? = \ s? (. +) \ n? ">

Я пытался сохранить свойства err.property с кодировкой utf-8, но эффекта не было.

1 Ответ

0 голосов
/ 11 июня 2019

Я предполагаю, что ваш ввод в файле .properties, например:

this is 254125
this is 9856524
ix25 = 20111
iax25 = 20222
ix25 = 20333
ibx25 = 20444

здесь с XSLT 1.0 я пытался добиться результата, как я понимаю:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:dp="http://www.datapower.com/extensions" xmlns="http://www.datapower.com/extensions"
    xmlns:dpconfig="http://www.datapower.com/param/config" extension-element-prefixes="dp"
    exclude-result-prefixes="dp dpconfig">

    <xsl:output omit-xml-declaration="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="/">
        <xsl:variable name="errorMessages" select="unparsed-text('err.properties','UTF-8')"/>
            <xsl:analyze-string select="$errorMessages" regex="(ix\d\d)\s*=\s*(.*)">
                <xsl:matching-substring>
                    <xsl:value-of select="concat('&lt;',regex-group(1),'&gt;', regex-group(2), '&lt;/',regex-group(1),'&gt;', '&#x000A;')" disable-output-escaping="yes"/>
                </xsl:matching-substring>
            </xsl:analyze-string>
    </xsl:template>

</xsl:stylesheet>

Ниже вывода я получил:

<ix25>20111</ix25>
<ix25>20333</ix25>
...