بالنظر إلى ملف XML هذا، هل يوجد xpath الذي سيعطيني قيمتي "الاختبار" و"الاسم"؟
سؤال
أحتاج إلى الحصول على قيمة سمة "الاختبار" في علامة xsl:When، والسمة "name" في علامة xsl:call-template.هذا xpath يجعلني قريبًا جدًا:
..../xsl:template/xsl:choose/xsl:when
ولكن هذا يؤدي فقط إلى إرجاع عناصر "متى"، وليس قيم السمات المحددة التي أحتاجها.
فيما يلي مقتطف من ملف XML الخاص بي:
<xsl:template match="field">
<xsl:choose>
<xsl:when test="@name='First Name'">
<xsl:call-template name="handleColumn_1" />
</xsl:when>
</xsl:choose>
المحلول
أجاب ستيف كوبر على الجزء الأول.بالنسبة للجزء الثاني يمكنك استخدام:
.../xsl:template/xsl:choose/xsl:when[@test="@name='First Name'"]/xsl:call-template/@name
والتي سوف تتطابق على وجه التحديد مع xsl:عندما تكون في المقتطف أعلاه.إذا كنت تريد أن تتطابق بشكل عام، فيمكنك استخدام:
.../xsl:template/xsl:choose/xsl:when/xsl:call-template/@name
نصائح أخرى
هل تريد .../xsl:template/xsl:choose/xsl:when/@test
إذا كنت تريد بالفعل الحصول على قيمة "الاسم الأول" من سمة الاختبار، فلن يحالفك الحظ - فالمحتوى الموجود داخل السمة هو مجرد سلسلة، وليس جزءًا من XML، لذلك لا يمكنك xpath .إذا كنت تريد الحصول على ذلك، فيجب عليك استخدام معالجة السلسلة (على سبيل المثال، سلسلة فرعية) للحصول على المحتوى المناسب