كيف يمكن جعل نسخة طبق الأصل من عقدة xml الأطفال مع XSLT ؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

مشكلتي أن لي مستند XML يحتوي على قصاصات من الأقسام المختلفة داخل و بينما يمر من خلال XSLT أود أن تجعل هذه مقتطفات من دون الضغط عليها.

لقد حاولت التفاف المقتطف في CDATA لكنه لا يعمل منذ أقل من وأكبر من ترجمتها < و > بدلا من كونها ردد مباشرة.

ما XSL المطلوبة تفعل هذا ؟

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

المحلول

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

وهذا هو يشار إلى "الهوية التحول" في XSLT مواصفات.

نصائح أخرى

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

مشكلتي الرئيسية في الواقع هو نسخ محتوى الوسم ، وليس العلامة نفسها.انها في الواقع من السهل جدا حل ولكن الأمر استغرق مني بعض الوقت لمعرفة ذلك (ربما لأن QtXmlPatterns تعطل قليلا جدا!)

لذا التالية نسخ العلامة اسمه هنا و كل من الأطفال:

<xsl:copy-of select="this/tag/here"/>

ولكن في معظم الأحيان كنت لا تريد أن تفعل ذلك لأن <here> هو في الواقع الحاوية ، وبعبارة أخرى ، فإنه لا ينبغي أن تظهر في الإخراج.في هذه الحالة يمكنك ببساطة القيام بذلك:

<xsl:copy-of select="this/tag/here/*"/>

هذا نسخ جميع الأطفال وجدت في الوسم اسمه <here>.

افتراض xhtml في عنصر YYY

http://www.dpawson.co.uk/xsl/sect2/N1930.html يشرح خيارات

xsl:نسخة من

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