كيف يمكنك استخدام متغير في xsl عند محاولة حدد العقدة?

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

  •  08-06-2019
  •  | 
  •  

سؤال

ظننت أن هذا سيكون من السهل جوجل, ولكن لقد تم unsucessful.

أريد أن تعيين متغير قيمة من سمة (من السهل حتى الآن) ثم استخدام هذا المتغير لتحديد عقدة أخرى على أساس قيمة هذه السمة.

على سبيل المثال:

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id='{@myId}']/@Name />

التي لا تعمل.لو كنت محل {@myId} مع قيمة في متغير ثم لا تجد الحق عقدة ، ولكن doign هذه الطريقة لا ينتج شيئا.أنا متأكد أنا في عداد المفقودين شيء ، أو ربما هناك طريقة مختلفة للقيام بذلك.

السياق هو أن هناك البيانات ذات الصلة تحت المستوى الأعلى العقد التي تتقاسم نفس قيمة معرف لذلك أنا بحاجة إلى الحصول على ذات العقد في قالب بلدي.

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

المحلول

حسنا ، لقد برزت أخيرا من ذلك.سخيفة المشكلة حقا ، أنا ببساطة الحاجة إلى ترك ونقلت الأقواس.واحدة من تلك الأوقات عندما كنت الفكر أن كنت قد حاولت ذلك.:D و أنا أخطأت @myId في المثال الأول ، كان القانون في الواقع $myId.

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />

نصائح أخرى

يبدو أنك قد حصلت على الخلط مع استخدام متغير (الذي هو مجرد $متغير) و قيمة السمة القوالب التي تسمح لك بوضع أي تعبير XPath في بعض الصفات مثل

<newElement Id="{@Id}"/>

فإنها يمكن أن يكون من الواضح جنبا إلى جنب ، حتى تتمكن من إدراج متغير في قيمة سمة قالب مثل:

<newElement Id="{$myId}"/>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top