هل يتم السماح بفواصل السطر في قيم سمة XML؟
-
19-08-2019 - |
سؤال
أدرك أنه ليس أنيقًا أو مرغوبًا ، ولكن هل يُسمح به (في XML المُشكل جيدًا) للحصول على قيمة سمة في عنصر XML لتزويد خطوط متعددة؟
على سبيل المثال
<some-xml-element value="this value goes over....
multiple lines!" />
نعم ، أدرك أن هناك طرقًا أفضل لكتابة ذلك. أود أن أكتبها شخصيا مثل:
<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>
أو:
<some-xml-element value="this value goes over.... " />
لكن لدينا محلل XML الخاص بنا وأرغب في معرفة ما إذا كان المثال الأول مسموح به في XML المكون جيدًا.
المحلول
http://www.w3.org/tr/rec-xml/#nt-attvalue
يبدو أنه يقول كل شيء إلا <
, &
, ، ومحدد الخاص بك ('
أو "
) على ما يرام. لذلك يجب أن يكون NewLine أيضًا.
نصائح أخرى
ومع ذلك ، فإنه وفقًا لتوصية W3C ، يجب أن يقوم محلل XML الخاص بك بتطبيع جميع أحرف المساحة البيضاء إلى الفضاء (0x20) - وبالتالي فإن إخراج الأمثلة الخاصة بك سيختلف (يجب أن يكون لديك خط جديد على الإخراج لـ "" ، ولكن الفضاء فقط في الحالة الأولى).
.NET فقط: إذا لم تكن متأكدًا مما إذا كانت سلسلة الهدف صالحة لـ XML سمة (وقدم قيمة هذه السمة عبر الرمز) ، فيمكنك دائمًا استخدامها SecurityElement.escape وظيفة للهروب من الأحرف غير صالحة.
وفقًا لوصف هذه الوظيفة ، فإن الأحرف الوحيدة غير الصالحة هي:
<
, >
, &
, '
, "
وهذا يعني (كما كتب أسلافي) ، يجب أن يكون الخط الجديد على ما يرام.
نعم المثال الأول هو واحد صالح.