В Google нашел еще более удобный jscript, который позволяет изменять литеры и символы с русского на латиницу. Включил его в файл xsl. Все работает, однако исходный результат не такой, как необходимо. Файл xsl имеет вид:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90.
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:jscript="http://jscript.org">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" exclude-result-prefixes="msxsl jscript"/>
<msxsl:script language="JavaScript" implements-prefix="jscript">
<![CDATA[
function urlRusLat(str) {
var ch
var cyr2latChars = new Array(
['а', 'a'], ['б', 'b'], ['в', 'v'], ['г', 'g'],
['д', 'd'], ['е', 'e'], ['ё', 'yo'], ['ж', 'zh'], ['з', 'z'],
['и', 'i'], ['й', 'y'], ['к', 'k'], ['л', 'l'],
['м', 'm'], ['н', 'n'], ['о', 'o'], ['п', 'p'], ['р', 'r'],
['с', 's'], ['т', 't'], ['у', 'u'], ['ф', 'f'],
['х', 'h'], ['ц', 'c'], ['ч', 'ch'],['ш', 'sh'], ['щ', 'shch'],
['ъ', ''], ['ы', 'y'], ['ь', ''], ['э', 'e'], ['ю', 'yu'], ['я', 'ya'],
['А', 'A'], ['Б', 'B'], ['В', 'V'], ['Г', 'G'],
['Д', 'D'], ['Е', 'E'], ['Ё', 'YO'], ['Ж', 'ZH'], ['З', 'Z'],
['И', 'I'], ['Й', 'Y'], ['К', 'K'], ['Л', 'L'],
['М', 'M'], ['Н', 'N'], ['О', 'O'], ['П', 'P'], ['Р', 'R'],
['С', 'S'], ['Т', 'T'], ['У', 'U'], ['Ф', 'F'],
['Х', 'H'], ['Ц', 'C'], ['Ч', 'CH'], ['Ш', 'SH'], ['Щ', 'SHCH'],
['Ъ', ''], ['Ы', 'Y'],
['Ь', ''],
['Э', 'E'],
['Ю', 'YU'],
['Я', 'YA'],
['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd'], ['e', 'e'],
['f', 'f'], ['g', 'g'], ['h', 'h'], ['i', 'i'], ['j', 'j'],
['k', 'k'], ['l', 'l'], ['m', 'm'], ['n', 'n'], ['o', 'o'],
['p', 'p'], ['q', 'q'], ['r', 'r'], ['s', 's'], ['t', 't'],
['u', 'u'], ['v', 'v'], ['w', 'w'], ['x', 'x'], ['y', 'y'],
['z', 'z'],
['A', 'A'], ['B', 'B'], ['C', 'C'], ['D', 'D'],['E', 'E'],
['F', 'F'],['G', 'G'],['H', 'H'],['I', 'I'],['J', 'J'],['K', 'K'],
['L', 'L'], ['M', 'M'], ['N', 'N'], ['O', 'O'],['P', 'P'],
['Q', 'Q'],['R', 'R'],['S', 'S'],['T', 'T'],['U', 'U'],['V', 'V'],
['W', 'W'], ['X', 'X'], ['Y', 'Y'], ['Z', 'Z'],
[' ', ' '],['0', '0'],['1', '1'],['2', '2'],['3', '3'],
['4', '4'],['5', '5'],['6', '6'],['7', '7'],['8', '8'],['9', '9'],
['-', '-'],['.', '.'],['-', '-'],[',', ','],['/', '/'],[';', ';'],[':', ':'],
['(', '('],[')', ')']
);
var newStr = new String();
for (var i = 0; i < str.length; i++) {
ch = str.charAt(i);
var newCh = '';
for (var j = 0; j < cyr2latChars.length; j++) {
if (ch == cyr2latChars[j][0]) {
newCh = cyr2latChars[j][1];
}
}
// Если найдено совпадение, то добавляется соответствие, если нет - пустая строка
newStr += newCh;
}
// Удаляем повторяющие знаки - Именно на них заменяются пробелы.
// Так же удаляем символы перевода строки, но это наверное уже лишнее
return newStr.replace(/[_]{2,}/gim, '_').replace(/\n/gim, '');
}
]]>
</msxsl:script>
<xsl:template match="articles">
<root>
<xsl:for-each select="article">
<article>
<xsl:copy-of select="node()"/>
<blistpart>
<xsl:value-of select="jscript:urlRusLat(.)"/>
</blistpart>
</article>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
Для файла xml в виде:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
<?xml version="1.0" encoding="UTF-8"?>
<articles>
<article>
<blistpart>Шлыкова О.В. Культура мультимедиа: учеб. пособие</blistpart>
<blistpart>Ильганаева В.А. Влияние информатизации на культурогенез общества . - 2004. - №1. - С.58 - 62.</blistpart>
<blistpart>Матлина С. Лучше один раз увидеть… Библиотека. - 2005. - №8. - С.44 - 46.</blistpart>
</article>
<article>
<blistpart>Концепция информатизации образования // Информатика и образование. - 1990. - №1. - С. 10-15.</blistpart>
<blistpart>Роберт И.В. Толкование слов и словосочетаний - № 6 - С. 20-25.</blistpart>
<blistpart>Управление библиотекой России. - СПб.: Профессия, 2008. - 288 с. - (Школьная библиотека ХХI в.).</blistpart>
<blistpart>http://www.glossary.ru/</blistpart>
</article>
</articles>
Небходимо получить такое преобразование (транслитерация на латиницу текста в <blistpart></blistpart>):
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
<articles>
<article>
<blistpart>SHlykova O.V. Kultura multimedia: ucheb. posobie</blistpart>
<blistpart>Ilganaeva V.A. Vliyanie informatizacii na kulturogenez obshchestva . - 2004. - 1. - S.58 - 62.</blistpart>
<blistpart>Matlina S. Luchshe odin raz uvidet Biblioteka. - 2005. - 8. - S.44 - 46.</blistpart>
</article>
<article>
<blistpart>Koncepciya informatizacii obrazovaniya // Informatika i obrazovanie. - 1990. - 1. - S. 10-15.</blistpart>
<blistpart>Robert I.V. Tolkovanie slov i slovosochetaniy - 6 - S. 20-25.</blistpart>
<blistpart>Upravlenie bibliotekoy Rossii. - SPb.: Professiya, 2008. - 288 s. - (SHkolnaya biblioteka HHI v.).</blistpart>
<blistpart>http://www.glossary.ru/</blistpart>
</article>
</articles>
Однако, получаю в ином виде.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
<root>
<article>
<blistpart>Шлыкова О.В. Культура мультимедиа: учеб. пособие</blistpart>
<blistpart>Ильганаева В.А. Влияние информатизации на культурогенез общества . - 2004. - №1. - С.58 - 62.</blistpart>
<blistpart>Матлина С. Лучше один раз увидеть… Библиотека. - 2005. - №8. - С.44 - 46.</blistpart>
<blistpart>SHlykova O.V. Kultura multimedia: ucheb. posobieIlganaeva V.A. Vliyanie informatizacii na kulturogenez obshchestva . - 2004. - 1. - S.58 - 62.Matlina S. Luchshe odin raz uvidet Biblioteka. - 2005. - 8. - S.44 - 46.</blistpart>
</article>
<article>
<blistpart>Концепция информатизации образования // Информатика и образование. - 1990. - №1. - С. 10-15.</blistpart>
<blistpart>Роберт И.В. Толкование слов и словосочетаний - № 6 - С. 20-25.</blistpart>
<blistpart>Управление библиотекой России. - СПб.: Профессия, 2008. - 288 с. - (Школьная библиотека ХХI в.).</blistpart>
<blistpart>http://www.glossary.ru/</blistpart>
<blistpart>Koncepciya informatizacii obrazovaniya // Informatika i obrazovanie. - 1990. - 1. - S. 10-15.Robert I.V. Tolkovanie slov i slovosochetaniy - 6 - S. 20-25.Upravlenie bibliotekoy Rossii. - SPb.: Professiya, 2008. - 288 s. - (SHkolnaya biblioteka HHI v.).http://www.glossary.ru/</blistpart>
</article>
</root>
Как видно, сохранился весь текст на русском языке, а транслитерация выполнена для всех строк, но размещена в одной строке. Как сделать правильно?
|