4.2.1 מבחני צמתים 4.2.2 פרדיקטים 4.2.3 מצייני ציר 4.2.4 הפעלת עיצוב בצורה רקורסיבית 4.2.5 עיצוב בצורה פרוצדורלית 4.2.1 מבחני צמתים בד"כ מתייחסים לשמות של אלמנטים אך לפעמים גם אחרת: *- אלמנט כלשהו
פרדיקטים מאפשרים להגדיר את התבנית בצורה מדוייקת יותר : פרדיקטים מוקפים בסוגריים מרובעים. -[ nodetest[1 האלמנט הראשון -[ nodetest[position()=2 האלמנט השני [ nodetest[position() mod 2 = 0 האלמנטים הזוגיים [(element[not(@type אלמנט שאין לא מאפיין type -[" computer[type="personal אלמנט computer שיש לו אלמנטים בנים type עם תוכן personal (" computer(normalize-space(type)="type- אותו דבר רק בלי להתחשב ברווחים לפני או אחרי הם קובעים לאיזו קטגוריה כללית משוייכים הצמתים הנבדקים - ancestor אב קדמון אב קדמון כולל הצומת עצמו- ancestor-or-self - attribute מאפיין של הצומת הנוכחי - child בנים של הצומת הנוכחי - descendant צאצאים של הצומת הנוכחי - descendant-or-self צאצאים כולל הצומת עצמו - following/following-sibling אלמנטים שמופיעים אחרי האלמנט הנוכחי במסמך - preceding/preceding-sibling אלמנטים שמופיעים לפני האלמנט הנוכחי במסמך - namespace הצמתים של מרחב השם של הצומת הנוכחי
- parent ההורה של הצומת הנוכחי האיור הבא ממחיש את את האמור לעיל: דוגמאות : ancestor::colorcolor האלמנטים שהם האבות הקדמונים של האלמנט following-sibling:colorcolor האלמנטים שבאים אחרי האלמנט :@color*:ancestor-or-self/ כל האלמנטים שהם אבות קדמונים של האלמנט הנוכחי ,כולל עצמו, שיש להם את המאפיין color 4.2.4 הפעלת עיצוב בצורה רקורסיבית XSLדרך אחת להפעלת העיצוב הוא להפעיל תהליך רקורסיבי אשר מנוהל ע"י מסמך ה- . יוצרים מספר תבניות כך שישנה התאמה לכל המסמך מתחילים בשורש ויורדים בעץ עד אשר אין עוד תבניות. דוגמה: מסמך XML
מסמך XSL
HTML
אנו רואים שכאן ישנו את האלמנט template אשר מתאים תבנית מסויימת לאחר מכן ישנו אלמנט apply-templates אשר ממשיך לחפש תבניות לבנים של האלמנט בעץ בעיות ברקורסיה ישנה בעיה שצריך להתגבר עליה . הבעיה היא מה קורה אם שתי תבניות מתאימות לאותו אלמנט. את הבעיה פותרים כך: ות אם קיימת תבנית במודול הנוכחי.תבניות מיובאות ממסמכים אחרים אינן נחש בנוסף תבניות בעלות עדיפות (priority)נמוך יותר אינן נחשבות את העדיפות מגדירים ע"י מאפיין priority באלמנט template אם בכל זאת ישנה התנגשות אזי או שמעבד התבניות יכריז על שגיאה או שיבחר בתבנית המופיעה אחרונה במסמך. זה אומר שהסדר במסמך הוא הקובע האחרון. המודל השני הוא לבחור את פעולת העיבוד בצורה פרוצדורלית. סדרת תבניות נוצרת כך שכל תבנית בוחר ומעבד באופן ספציפי את האלמנטים הנחוצים
|