توليد أحرف غير قابلة للطباعة منخفضة ترتيب من XLST

StackOverflow https://stackoverflow.com/questions/1103045

  •  12-09-2019
  •  | 
  •  

سؤال

أحاول استخدام إخراج نص XSLT لإنشاء ملف (بتنسيق ملف لا أفعله)، وبينما يكون في الغالب نصا، يتضمن أحرفا غير قابلة للطباعة منخفضة الترتيب كعلامات، بما في ذلك الأحرف التي غير صالحة داخل ملف XLST (وفقا لمواصفات XSLT).

أود الحصول على شيء مثل أدناه للعمل، ولكن بدلا من ذلك ليس ملف XSLT صالح لأنه يحتوي على أحرف غير مسموح به في ملفات XSLT:

<?xml version="1.0" encoding="US-ASCII" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="text" encoding="US-ASCII"/>
  <xsl:template match="/">&#1;</xsl:template>
</xsl:stylesheet>

أحصل على الخطأ التالية:

[Fatal Error] :4:35: Character reference "&#1" is an invalid XML character.
ERROR:  'Character reference "&#1" is an invalid XML character.'
FATAL ERROR:  'Could not compile stylesheet'

لقد حاولت بحرف حقيقي 1 أيضا أيضا، مع أو بدون قسم CDATA، XSL: عناصر نصية، خرائط أحرف XSLT-2، بضع ترميزات مختلفة، ولكن لا يمكنني معرفة كيفية الحصول على شخصية ASCII مع ثنائي الرمز = 1.

يجب أن ألجح إلى ما بعد معالجة خرجي، وهو ما ليس مثاليا.

هل هناك أي طريقة لتوليد إخراج حرف واحد غير قابل للطباعة غير قابل للطباعة من XSLT؟

البيئة: جافا 6، بنيت في محول XSL.

هل كانت مفيدة؟

المحلول

يمكنك الاتصال بطرق ثابتة لفئات Java من XSLT. استخدم الاختراق التالي على سبيل المثال لكتابة 0x01 إلى دفق الإخراج الخاص بك:

<?xml version="1.0" encoding="US-ASCII" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:char="java.lang.Character" version="1.0">
    <xsl:output method="text" encoding="US-ASCII" />
    <xsl:template match="/">
        <xsl:value-of select="char:toString(1)"></xsl:value-of>
    </xsl:template>
</xsl:stylesheet>

نصائح أخرى

خيار آخر الذي وصلت إليه، هو استخدام XSL: Param التي تحدد بيئة الاتصال على الأحرف 0x01.

هذا يعني أنه بدلا من العمل دائما ضمن بيئة Java، ويتطلب تغييرات في أي مكان آخر، فإن ورقة الأنماط تتطلب الدعم البيئي في جميع البيئات، ولكن يمكن أن تعمل دون تغيير فيها.

أنا لست متأكدا بعد أي جانب من تلك المفاضلة هو الأفضل لما أعمل عليه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top