نظرة عامة والهدف
من خارج منطقة الجزاء, موس’ جزء ويب الخاص باستعلام المحتوى (كقوب) تعرض نتائجها في شكل قائمة, مماثلة نتائج البحث. من الممكن أيضا لعرض النتائج في تنسيق الشبكة (الأول-هاء. تنسيق جدول HTML). تنسيقات الشبكة الأفضل في بعض الحالات. أنا تصف كيفية تحقيق هذا التأثير في هذه المقالة..
سيناريو العمل
لقد عملت مع عميل على تمهيدية موس على مستوى المؤسسة. لقد قمنا بتصميم على تصنيف المشاريع مواطنين من الدرجة الأولى في التسلسل الهرمي ويكون موقع المستوى الأعلى الخاصة بهم. مديرو المشروع الاحتفاظ بقائمة معلومات ملخص المشروع المفرد, مثل العنوان, الميزانية, تاريخ الانتهاء المتوقع, أما بقية الميزانية وغيرها من المجالات نوع التلخيص. قبل "المفرد" يعني قائمة SharePoint مخصصة يضمن أن تحتوي على عنصر واحد فقط. ننجرف, يبدو مثل هذا:
النهج التقني هو الشيء نفسه كما هو موضح هنا (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). يستخدم كقوب تحويل XSL تنبعث منها HTML للمتصفح لتقديم.
أتصور النتيجة دائماً قبل الغوص في XSL XSL لأن كابوس. هنا هو بلدي النتيجة المرجوة:
إتش تي أم ال مثل هذا يولد تلك النتيجة:
|
<html>
<الهيئة>
<مركز>
<الجدول الحدود= 1>
<!-- تسميات->
<tr لون الخلفية= أزرق>
<td><الخط لون= الأبيض><ب>اسم المشروع</ب></الخط></td>
<td قم بمحاذاة= الحق><الخط لون= الأبيض><ب>التاريخ بالكامل</ب></الخط></td>
<td قم بمحاذاة= الحق><الخط لون= الأبيض><ب>الميزانية</ب></الخط></td>
<td قم بمحاذاة= الحق><الخط لون= الأبيض><ب>المصروفات الفعلية</ب></الخط></td>
<td><الخط لون= الأبيض><ب>الحالة العامة</ب></الخط></td>
</tr>
<tr>
<td>غرفة الكمبيوتر إعادة الأسلاك.</td>
<td قم بمحاذاة= الحق>02/01/08</td>
<td قم بمحاذاة= الحق>22,500.00</td>
<td قم بمحاذاة= الحق>19,000.00</td>
<td>في التقدم</td>
</tr>
<tr>
<td>توفير خدمة لترقية SQL</td>
<td قم بمحاذاة= الحق>04/01/08</td>
<td قم بمحاذاة= الحق>7,500.00</td>
<td قم بمحاذاة= الحق>0.00</td>
<td>المخطط</td>
</tr>
</الجدول>
</مركز>
</الهيئة>
</html>
|
النهج
اتبع هذه الخطوات إنشاء الشبكة:
- التعرف على مكونات الشبكة (صفوف/أعمدة).
- تعريف وإنشاء أعمدة موقع ضروري.
- إنشاء مواقع فرعية للمشاريع وقوائم المفرد.
- إضافة كقوب إلى صفحة ويب وتكوينه للبحث عن القوائم الخاصة بك.
- تعديل XML كقوب جمع ما يصل أعمدة إضافية.
- تعديل XSL لإنشاء جدول.
أنا ذاهب إلى التركيز على عدد ستة. أرقام واحد من خلال أربعة هي شيء أن تفعل أي مستخدم كقوب ومستقيم إلى الأمام. وقد عدد خمسة موثقة توثيقاً جيدا قبل الآخرين بما في ذلك هذا المقال آدن لقطة شاشة حصرية من MSDN هنا (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) ومدونة هيذر سليمان هنا (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).
الصواميل والمسامير
بدء وتنفيذ الخطوات من واحد إلى خمسة حسب وثائق MSDN والمادة هيذر سليمان.
عند هذه النقطة, التي قمت بإضافتها إلى الصفحة الخاصة بك كقوب ولديك الخاص بك <كوممونفيوفيلدس> تكوين حسب الضرورة.
اتباع الخطوات المعتادة, احصل على هذه النتائج المتوسطة:
1. إنشاء نوع محتوى, قائمة مخصصة تيمبلاتيزيد لنوع المحتوى، واثنين من المواقع. هنا هو نوع المحتوى:
هنا هو موقع الهيكل:
2. إضافة كقوب بعد إنشاء بلدي المشروع مواقع فرعية والمفرد قوائم ملخص المشروع:
3. إضافة جميع المعلومات الإضافية التي أريد عبر <كوممونفيوفيلدس>:
<الملكية الاسم="كوممونفيوفيلدس" نوع="السلسلة">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</الملكية>
علما بأن اضطررت إلى إبقاء كافة حقول الخصائص في سطر واحد، أو أنها لا تعمل (كقوب أن تقول لي أن قام الاستعلام بإرجاع أية عناصر).
4. عند هذه النقطة, نحن مستعدون لتجاوز مقالة MSDN والوجه للمادة هيذر سليمان. اتبع الخطوات لها ابتداء من قرب خطوة #5 لإنشاء مخصصة / الإصدار unghosted من ItemStyle.xsl. أنا اتبع النصيحة هيذر, حتى من خلال الخطوة 11 والحصول على هذه النتائج في المرحلة المتوسطة:
4.1: اسم قالب XSL بلدي كما يلي:
<xsl:اسم القالب = "الشبكة" تطابق = "صف[@Style = 'الشبكة']" وضع = "إيتيمستيلي">
أنا أيضا قليلاً تعديل لها واقترح <xsl:لكل …> عن طريق إضافة <br/> علامة لتوفير قائمة بنظافة:
<xsl:لكل حدد="@*">
ف:<xsl:القيمة حدد="الاسم()" /><br/>
</xsl:لكل>
4.2: تعديل جزء ويب, الذهاب إلى المظهر وحدد بلدي الشبكة "" نمط:
تطبيق التغيير، وهنا هو نتيجة:
يمكننا أن نرى من ما ورد أعلاه أن الحقول نريد (اسم المشروع, المصروفات, مركز, إلخ) متاحة لنا لاستخدامها عندما كنا تنبعث منها HTML. ليس هذا فقط, ولكن نحن نرى أسماء الذي نحن يجب أن مرجع هذه الأعمدة في XSL. وعلى سبيل المثال, ونحن مرجع "مركز المشروع" ك "Project_x005F_x0020_Name".
عند هذه النقطة, نغادر من بلوق هيذر وعلى أكتاف هذه العمالقة, أود أن أضيف بلدي قليلاً.
ContentQueryMain.xsl
ملاحظة: عند إجراء تغييرات على كل من ContentQueryMain.xsl، فضلا عن ItemStyle.xsl, كنت بحاجة للتحقق من هذه الملفات مرة أخرى قبل أن يمكنك مشاهدة تأثير التغييرات الخاصة بك.
لأغراض صنع الشبكة, موس يستخدم اثنين من ملفات XSL مختلفة لإنتاج النتائج التي نراها من كقوب. لتوليد بت السابقة للإخراج, قمنا بتعديل ItemStyle.xsl. موس فعلا يستخدم ملف XSL آخر, ContentQueryMain.xsl إلى بالاقتران مع ItemStyle.xsl لإنشاء HTML لها. كما يدل على ذلك اسمه, ContentQueryMain.xsl هو الرئيسي "" XSL التي تتحكم في تدفق الشاملة للترجمة. التكرار عبر كافة العناصر التي تم العثور عليها ويمر عليهم واحداً تلو الآخر لقوالب في ItemStyle.xsl. سوف نقوم بتعديل ItemStyle.xsl لتوليد المفتوحة <الجدول> العلامة قبل انبعاث الصف الأول من البيانات وإغلاق <الجدول> العلامة بعد انبعاث الصف الأخير. لإنجاز هذا, يتم تعديل ContentQueryMain.xsl لتمرير معلمتين من معلمات إلى شبكة "لدينا" قالب في ItemStyle.xsl, "الصف الأخير" و "الصف الحالي". ويستخدم ItemStyle.xsl هذه للشرطي تنبعث منها العلامات اللازمة.
باستخدام تقنية هيذر سليمان, ونحن موقع ContentQueryMain.xsl. وهو يقع في نفس المكان ItemStyle.xsl. وينبغي أن تساعد هذه لقطة الشاشة:
ونحن بحاجة إلى القيام بالتغييرات التالية:
- تعديل قالب xsl, "كاليتيمتيمبلاتي" أن يستدعي في الواقع لدينا قالب الشبكة في ItemStyle.xsl. أننا سوف تمر معلمتين من معلمات إلى قالب الشبكة حتى أنه سيتعين عليها البيانات فإنه يحتاج إلى توليد شروط فتح وإغلاق <الجدول> العلامات.
- تعديل نوعا آخر من ContentQueryMain.xsl التي تدعو كاليتيمتيمبلاتي "" لتمرير فإنه لاستروو "" المعلمة حيث أن لاستروو قد أن ينتقل إلى قالب الشبكة لدينا.
حدد موقع القالب المسمى "OuterTemplate.CallItemTemplate" حدد السلسلة:
<xsl:قالب الاسم="OuterTemplate.CallItemTemplate">
استبدال القالب كله كما يلي:
|
<xsl:قالب الاسم="OuterTemplate.CallItemTemplate">
<xsl:بارام الاسم="كوربوسيشن" />
<!--
إضافة لاستروو "" المعلمة.
نحن نستخدم فقط عندما يتم تمرير نمط عنصر في "الشبكة".
-->
<xsl:بارام الاسم="لاستروو" />
<xsl:اختر>
<xsl:عندما اختبار="@Style = 'نيوسرولوبيتيم'">
<xsl:تطبيق قوالب حدد="." وضع="إيتيمستيلي">
<xsl:مع بارام الاسم="اديتمودي" حدد="$cbq_iseditmode" />
</xsl:تطبيق قوالب>
</xsl:عندما>
<xsl:عندما اختبار="@Style = 'نيوسبيجيتيم'">
<xsl:تطبيق قوالب حدد="." وضع="إيتيمستيلي">
<xsl:مع بارام الاسم="كوربوس" حدد="$كوربوسيشن" />
</xsl:تطبيق قوالب>
</xsl:عندما>
<xsl:عندما اختبار="@Style = 'نيوسكاتيجورييتيم'">
<xsl:تطبيق قوالب حدد="." وضع="إيتيمستيلي">
<xsl:مع بارام الاسم="كوربوس" حدد="$كوربوسيشن" />
</xsl:تطبيق قوالب>
</xsl:عندما>
<!--
تمرير الموقف الحالي ولاستروو إلى قالب itemstyle.xsl الشبكة.
ItemStyle.xsl سوف تستخدم ذلك تنبعث منها الفتح وإغلاق <الجدول> العلامات.
-->
<xsl:عندما اختبار="@Style = 'الشبكة'">
<xsl:تطبيق قوالب حدد="." وضع="إيتيمستيلي">
<xsl:مع بارام الاسم="كوربوس" حدد="$كوربوسيشن" />
<xsl:مع بارام الاسم="آخر صورة" حدد="$لاستروو" />
</xsl:تطبيق قوالب>
</xsl:عندما>
<xsl:خلاف ذلك>
<xsl:تطبيق قوالب حدد="." وضع="إيتيمستيلي">
</xsl:تطبيق قوالب>
</xsl:خلاف ذلك>
</xsl:اختر>
</xsl:قالب>
|
التعليقات تصف غرض التغييرات.
طبعًا, "OuterTemplate.CallItemTemplate" يسمى نفسه من قالب آخر. تحديد موقع هذا القالب عن طريق البحث عن هذه السلسلة النصية:
<xsl:قالب الاسم="OuterTemplate.Body">
قم بالتمرير من خلال الإرشادات الموجودة في OuterTemplate.Body وإدراج المعلمة لاستروو على النحو التالي (تعليق بخط مائل كما هو موضح):
<xsl:قالب المكالمة الاسم="OuterTemplate.CallItemTemplate">
<xsl:مع بارام الاسم="كوربوسيشن" حدد="$كوربوسيشن" />
<!-- إدراج المعلمة لاستروو. -->
<xsl:مع بارام الاسم="لاستروو" حدد="$لاستروو"/>
</xsl:قالب المكالمة>
وبعد كل هذا, وأخيراً لدينا الأشياء إعداد بشكل صحيح حيث أن لدينا ItemStyle.xsl يمكن أن تنبعث منها <الجدول> العلامات في المكان المناسب.
ItemStyle.Xsl
ملاحظة: مرة أخرى, تحقق في ItemStyle.xsl بعد إجراء أي تغييرات، حيث يمكنك أن ترى تأثير تلك التغيرات.
لدينا مهمتين هنا:
- استبدال قالب شبكة كاملة. يمكنك نسخ/لصق من الأسفل.
- إضافة بعض الجامبو خارج تعريف القالب التي تمكن "فورماتكورينسي" قالب للعمل. (يمكن أن نقول أن لدى التعامل مع ضعيف في XSL).
الأولى, بالقرب من الأعلى من ItemStyle.xsl, أضف هذا السطر:
<!-- بعض الجامبو التي تمكننا من عرض الولايات المتحدة. تحويل العملات. -->
<xsl:تنسيق عشري الاسم="الموظفين" أرقام="د" />
<xsl:قالب الاسم="الافتراضي" مباراة="*" وضع="إيتيمستيلي">
علما أن أضفت مباشرة قبل <xsl:اسم القالب = "الافتراضي" …> تعريف.
القادم, أن نعود إلى أعمالنا قالب الشبكة. استبدال قالب شبكة كاملة مع التعليمات البرمجية أدناه. أنه دقيق وعلق, ولكن لا تتردد في البريد الإلكتروني لي أو ترك التعليقات على بلوق إذا كان لديك أسئلة.
|
<xsl:قالب الاسم="الشبكة" مباراة="الصف[@Style = 'الشبكة']" وضع="إيتيمستيلي">
<!--
ContentMain.xsl يمر كوربوس وآخر.
ونحن نستخدم هذه للشرطي تنبعث منها الفتح وإغلاق <الجدول> العلامات.
-->
<xsl:بارام الاسم="كوربوس" />
<xsl:بارام الاسم="آخر صورة" />
<!-- المتغيرات التالية معدلة من ItemStyle.xsl القياسية -->
<xsl:متغير الاسم="سافيماجيورل">
<xsl:قالب المكالمة الاسم="OuterTemplate.GetSafeStaticUrl">
<xsl:مع بارام الاسم="أورلكولومنامي" حدد="'ImageUrl'"/>
</xsl:قالب المكالمة>
</xsl:متغير>
<xsl:متغير الاسم="سافيلينكورل">
<xsl:قالب المكالمة الاسم="OuterTemplate.GetSafeLink">
<xsl:مع بارام الاسم="أورلكولومنامي" حدد="'LinkUrl'"/>
</xsl:قالب المكالمة>
</xsl:متغير>
<xsl:متغير الاسم="ديسبلايتيتلي">
<xsl:قالب المكالمة الاسم="OuterTemplate.GetTitle">
<xsl:مع بارام الاسم="العنوان" حدد="@Title"/>
<xsl:مع بارام الاسم="أورلكولومنامي" حدد="'LinkUrl'"/>
</xsl:قالب المكالمة>
</xsl:متغير>
<xsl:متغير الاسم="لينكتارجيت">
<xsl:إذا كان اختبار="@OpenInNewWindow = 'true'" >_blank</xsl:إذا كان>
</xsl:متغير>
<!--
هنا يمكننا تعريف متغير, "تابليستارت". وهذا يتضمن HTML التي نستخدمها لتعريف فتح الجدول، فضلا عن تسميات الأعمدة. لاحظ أنه إذا كان كوربوس = 1, وهو يتضمن HTML في علامة CDATA.
خلاف ذلك, أنها سوف تكون فارغة.
قيمة تابليستارت اميتيد في كل مرة يتم استدعاء إيتيمستيلي عبر ContentQueryMain.xsl.
-->
<xsl:متغير الاسم="تابليستارت">
<xsl:إذا كان اختبار="$كوربوس = 1">
<![CDATA[
<حدود الجدول = 1>
<tr bgcolor = "الأزرق">
<td><لون الخط = "الأبيض"><ب>اسم المشروع</ب></الخط></td>
<td محاذاة = "الحق"><لون الخط = "الأبيض"><ب>التاريخ بالكامل</ب></الخط></td>
<td محاذاة = "الحق"><لون الخط = "الأبيض"><ب>الميزانية</ب></الخط></td>
<td محاذاة = "الحق"><لون الخط = "الأبيض"><ب>المصروفات الفعلية</ب></الخط></td>
<td><لون الخط = "الأبيض"><ب>الحالة العامة</ب></الخط></td>
</tr>
]]>
</xsl:إذا كان>
</xsl:متغير>
<!--
متغير آخر, تابليند يعرف ببساطة الإغلاق الجدول العلامة.
كما هو الحال مع تابليستارت, أنها دائماً اميتيد. وهذا السبب يتم تعيين القيمة الخاصة به الشرطي استناداً إلى ما إذا كان لقد تم مرت علينا الصف الأخير من ContentQueryMain.xsl.
-->
<xsl:متغير الاسم="تابليند">
<xsl:إذا كان اختبار="$كوربوس = $Last">
<![CDATA[ </الجدول> ]]>
</xsl:إذا كان>
</xsl:متغير>
<!--
دائماً تنبعث منها محتويات تابليستارت. إذا لم يكن الصف الأول أقره لنا ContentQueryMain.xsl, ثم أننا نعرف قيمته ستكون فارغة.
تعطيل الإخراج الهروب لأنه عندما تابليستارت ليس فارغاً, أنها تتضمن HTML الفعلي الذي نريد أن يتم تقديمها بواسطة المستعرض. إذا أننا لا نقول محلل XSL لتعطيل الإخراج الهروب, سوف تولد الأشياء مثل "&الملازم;الجدول>" بدلاً من "<الجدول>".
-->
<xsl:القيمة حدد="$تابليستارت" تعطيل-إخراج-الهروب="نعم"/>
<tr>
<!--
ف:ف Project_x005F_x0020_Name:ف Project_x005F_x0020_End_x005F_x0020_Date:ف Project_x005F_x0020_Budget:ف Project_x005F_x0020_Expenses:Project_x005F_x0020_Status
-->
<td>
<xsl:القيمة حدد="@Project_x005F_x0020_Name"/>
</td>
<td قم بمحاذاة="حق">
<xsl:القيمة حدد="@Project_x005F_x0020_End_x005F_x0020_Date"/>
</td>
<td قم بمحاذاة="حق">
<xsl:قالب المكالمة الاسم="فورماتكورينسي">
<xsl:مع بارام الاسم="القيمة" حدد="@Project_x005F_x0020_Budget"></xsl:مع بارام>
</xsl:قالب المكالمة>
</td>
<td قم بمحاذاة="حق">
<xsl:قالب المكالمة الاسم="فورماتكورينسي">
<xsl:مع بارام الاسم="القيمة" حدد="@Project_x005F_x0020_Expenses"> </xsl:مع بارام>
</xsl:قالب المكالمة>
</td>
<td>
<xsl:القيمة حدد="@Project_x005F_x0020_Status"/>
</td>
<!--
كل ما يلي علق بها توضيح الأمور.
ومع ذلك, إعادته والأشياء إلى <td> لمعرفة تأثيرها.
-->
<!--
<div معرف = "لينكيتيم" الطبقة = "البند">
<xsl:إذا كان اختبار = "طول السلسلة($سافيماجيورل) != 0 ">
<div class = "صورة المنطقة اليسرى">
<href = "{$سافيلينكورل}" الهدف = "{$لينكتارجيت}">
<فئة img = "الصورة-عرض ثابت" src = "{$سافيماجيورل}" alt = "{@ImageUrlAltText}"/>
</أ>
</div>
</xsl:إذا كان>
<div class = "عنصر الارتباط">
<xsl:قالب المكالمة name="OuterTemplate.CallPresenceStatusIconTemplate"/>
<href = "{$سافيلينكورل}" الهدف = "{$لينكتارجيت}" عنوان = "{@LinkToolTip}">
<xsl:حدد قيمة من = "$DisxslyTitle"/>
</أ>
<div class = "الوصف">
<xsl:القيمة من select="@Description" />
</div>
</div>
</div>
-->
</tr>
<!--
تنبعث منها الإغلاق الجدول العلامة. إذا نحن لسنا في الصف الأخير,
هذا وسوف تكون فارغة.
-->
<xsl:القيمة حدد="$تابليند" تعطيل-إخراج-الهروب="نعم"/>
</xsl:قالب>
<xsl:قالب الاسم="فورماتكورينسي">
<xsl:بارام الاسم="القيمة" حدد="0" />
<xsl:القيمة حدد='تنسيق الرقم($القيمة, "$DDD,DDD,DDD.DD ", "الموظفين")' />
</xsl:قالب>
|