سؤال

لدي ملف XML الذي يوجد فيه علامة ، أي ،u003CGender/> يحمل إما "M" أو "F" كبيانات ، والآن عملي هو اختبار القيمة والكتابة <Gender_Tag>Male</Gender_Tag> أو <Gender_Tag>Female</Gender_Tag> وفقًا للقيم M أو F على التوالي .. جربت هذا الرمز .. لقد كان يعمل في ظروف أخرى ..

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

المحلول

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

استخدم النقطة للتعبير عن العقدة الحالية (هنا عنصر الجنس):

<xsl:template match="root/details/Gender">
  <Gender_Tag>  
    <xsl:choose>
      <xsl:when test=".='M'">
        <xsl:text>Male</xsl:text>
      </xsl:when>
      <xsl:otherwise>
       <xsl:text>Female</xsl:text>
      </xsl:otherwise>
    </xsl:choose>
  </Gender_Tag>
</xsl:template>

تحرير: يمكنك استخدام قالبين أيضًا

<xsl:template match="root/details/Gender[.='M']">
  <Gender_Tag>Male</Gender_Tag>
</xsl:template>
<xsl:template match="root/details/Gender[.='F']">
  <Gender_Tag>Female</Gender_Tag>
</xsl:template>

نصائح أخرى

لم يخبر ، ولكن قد يعمل ...

<xsl:template match="root/details/Gender">
  <xsl:if test="text()='M'">
    <Gender_Tag>Male</Gender_Tag>
  </xsl:if>
  <xsl:if test="text()='F'">
    <Gender_Tag>Female</Gender_Tag>
  </xsl:if>
</xsl:template>
<xsl:template match="root/details/Gender">
    <xsl:choose>
        <xsl:when test="normalize-space(text())='M'">
            <Gender_Tag>Male</Gender_Tag>
        </xsl:when>
        <xsl:otherwise>
            <Gender_Tag>Female</Gender_Tag>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

مثالي يختلف في نقطتين عن ScoreGraphic's:

  1. يستخدم XSL: اختر التأكد من أنه يتم إنشاء عنصر واحد فقط gender_tag (وهذا يعني أيضًا أنه إذا لم يكن النص "م" ، فهو دائمًا أنثى)

  2. استخدام normalize-space() قم بتشغيل مساحة بيضاء حول محتوى النص للعنصر.

دون رؤية XML من الصعب أن تكون متأكداً ، لكنني أعتقد أن عينة XSLT يجب أن تكون:

<xsl:template match="root/details/Gender">    
   <xsl:if test=".='M'">
      <Gender_Tag><xsl:text>Male</xsl:text></Gender_Tag>
   </xsl:if>
   <xsl:if test=".='F'">
      <Gender_Tag><xsl:text>Female</xsl:text></Gender_Tag>
   </xsl:if>
</xsl:template>

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

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