D
Dimly
Доброго.
Возникла проблема в XSLT преобразовании данных с обработкой (форматированием) в процессе.
К примеру задача - поменять разделители "точка с запятой" на пробел. (о том чтобы заменить на тег <BR> - я уже молчу)
Имеем DATA.XML
Имеем FILE.XSL
Если такой ХМЛ открыть в IE - то все великолепно. Значение заменяет точку с запятой на пробел.
Но если (удалив из ХМЛ вторую строку) закинуть все в LS
то out.html- возвращает HTML точно до первого вызова скрипта, и после него просто корректно закрывает все теги, не обрабатывая информаци., оставляя даже это поле пустым.
Кстати если сделать вот так (на ва скриптах) , то тоже работает
Переменная fff содержит корретный отработанный HTML.
Догадываюсь что это потому что само использование javaScript в XSL - фича MS... или же опять курил не те мануалы по яве.
(вместо xslt пробовал и msxslt - результат то же, да еще и явное использование фич MS)
Возникла проблема в XSLT преобразовании данных с обработкой (форматированием) в процессе.
К примеру задача - поменять разделители "точка с запятой" на пробел. (о том чтобы заменить на тег <BR> - я уже молчу)
Имеем DATA.XML
Код:
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="FILE.XSL"?>
.................................................................
<OfficePhone title="Office phone" value="1123 123;123;22" />
.................................................................
Имеем FILE.XSL
Код:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xslt="urn:schemas-microsoft-com:xslt"
xmlns:ext="urn:extension-functions"
exclude-result-prefixes="xslt ext">
<xslt:script language="JavaScript" implements-prefix="ext">
function arrau(st) {
var mArr = st.split(";")
var st2 = mArr.join(" ");
return st2;
}
</xslt:script>
<xsl:output encoding="Windows-1251" method='html' indent='yes'/>
<xsl:template match="/">
.................................................................
<TD class="reportCell"><xsl:value-of select="ext:arrau2(string(OfficePhone/@value))" /></TD>
.................................................................
Если такой ХМЛ открыть в IE - то все великолепно. Значение заменяет точку с запятой на пробел.
Но если (удалив из ХМЛ вторую строку) закинуть все в LS
Код:
Dim XML_in As NotesStream
Dim XSL_ss As NotesStream
Set XML_in=session.CreateStream
Set XSL_ss=session.CreateStream
Call XML_in.Open("DATA.xml")
Call XSL_ss.Open("FILE.xsl")
Dim XML_out As NotesStream
Set XML_out=session.CreateStream
Call XML_out.Open("out.html")
XML_out.Truncate
Dim transformer As NotesXSLTransformer
Set transformer=session.CreateXSLTransformer(XML_in, XSL_ss, XML_out)
transformer.Process
то out.html- возвращает HTML точно до первого вызова скрипта, и после него просто корректно закрывает все теги, не обрабатывая информаци., оставляя даже это поле пустым.
Кстати если сделать вот так (на ва скриптах) , то тоже работает
Код:
source = new ActiveXObject("Microsoft.XMLDOM");
source.async = false;
style = new ActiveXObject("Microsoft.XMLDOM");
style.async = false;
source.load("DATA.XML");
style.load("FILE.xsl");
fff = source.transformNode(style);
f = new ActiveXObject("Scripting.FileSystemObject");
t = f.CreateTextFile("out.html", true);
t.Write(fff);
Переменная fff содержит корретный отработанный HTML.
Догадываюсь что это потому что само использование javaScript в XSL - фича MS... или же опять курил не те мануалы по яве.
(вместо xslt пробовал и msxslt - результат то же, да еще и явное использование фич MS)