JBoss Rich Faces SVN: r15854 - in root/ui-sandbox/trunk/components/tables/ui/src/main: java/org/richfaces/renderkit and 1 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2009-11-09 08:20:18 -0500 (Mon, 09 Nov 2009)
New Revision: 15854
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/table.css
Log:
add subTable "footer" facet support
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java 2009-11-09 12:53:55 UTC (rev 15853)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java 2009-11-09 13:20:18 UTC (rev 15854)
@@ -119,7 +119,7 @@
@Override
public String getFooterFirstRowSkinClass() {
- return "rich-subtable-header";
+ return "rich-subtable-footer";
}
@Override
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2009-11-09 12:53:55 UTC (rev 15853)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2009-11-09 13:20:18 UTC (rev 15854)
@@ -103,9 +103,14 @@
childRowHolder.setHeaderRow(rowHolder.isHeaderRow());
if(child instanceof UISubTable) {
+ //ecode subTable header facet
encodeHeader(writer, context, (UISubTable)child);
}
encodeRows(context, childRow, childRowHolder);
+
+ if(child instanceof UISubTable) {
+ encodeFooter(writer, context, (UISubTable)child);
+ }
} else if(child instanceof UIColumn) {
@@ -141,7 +146,6 @@
}
processCell++;
}
-
}
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/table.css
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/table.css 2009-11-09 12:53:55 UTC (rev 15853)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/table.css 2009-11-09 13:20:18 UTC (rev 15854)
@@ -98,10 +98,18 @@
}
.rich-subtable-footer{
+ background-color: #7878B4;
}
.rich-subtable-footer-cell{
-
+ border-bottom:1px solid #C0C0C0;
+ border-right:1px solid #C0C0C0;
+ color:#000000;
+ font-family:Arial,Verdana,sans-serif;
+ font-size:11px;
+ font-weight:bold;
+ padding:4px;
+ text-align:left;
}
.rich-subtable-header {
16 years, 8 months
JBoss Rich Faces SVN: r15853 - in branches/sandbox/3.3.X_JSF2: samples/dropdownmenu-sample/src/main/java/org/richfaces/samples/dropdownmenu and 2 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: Alex.Kolonitsky
Date: 2009-11-09 07:53:55 -0500 (Mon, 09 Nov 2009)
New Revision: 15853
Modified:
branches/sandbox/3.3.X_JSF2/samples/dropdownmenu-sample/pom.xml
branches/sandbox/3.3.X_JSF2/samples/dropdownmenu-sample/src/main/java/org/richfaces/samples/dropdownmenu/Bean.java
branches/sandbox/3.3.X_JSF2/ui/menu-components/src/main/java/org/richfaces/renderkit/html/MenuItemRendererBase.java
branches/sandbox/3.3.X_JSF2/ui/menu-components/src/main/templates/org/richfaces/htmlMenuItem.jspx
Log:
RF-7990 - JS error when style attribute is set to rich:menuItem
Modified: branches/sandbox/3.3.X_JSF2/samples/dropdownmenu-sample/pom.xml
===================================================================
--- branches/sandbox/3.3.X_JSF2/samples/dropdownmenu-sample/pom.xml 2009-11-09 08:44:51 UTC (rev 15852)
+++ branches/sandbox/3.3.X_JSF2/samples/dropdownmenu-sample/pom.xml 2009-11-09 12:53:55 UTC (rev 15853)
@@ -1,4 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>samples</artifactId>
<groupId>org.richfaces</groupId>
@@ -13,25 +14,34 @@
<finalName>dropdownmenu-sample</finalName>
</build>
<dependencies>
- <dependency>
- <groupId>org.richfaces.ui</groupId>
- <artifactId>core</artifactId>
- <version>${project.version}</version>
- </dependency>
<dependency>
<groupId>org.richfaces.ui</groupId>
+ <artifactId>core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.richfaces.ui</groupId>
<artifactId>dropdown-menu</artifactId>
- <version>${project.version}</version>
+ <version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.richfaces.ui</groupId>
<artifactId>menu-components</artifactId>
- <version>${project.version}</version>
+ <version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.richfaces.samples</groupId>
<artifactId>skins</artifactId>
- <version>${project.version}</version>
+ <version>${project.version}</version>
</dependency>
+
+ <!-- for RF-7990 -->
+<!--
+ <dependency>
+ <groupId>org.richfaces.ui</groupId>
+ <artifactId>toolBar</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+-->
</dependencies>
</project>
\ No newline at end of file
Modified: branches/sandbox/3.3.X_JSF2/samples/dropdownmenu-sample/src/main/java/org/richfaces/samples/dropdownmenu/Bean.java
===================================================================
--- branches/sandbox/3.3.X_JSF2/samples/dropdownmenu-sample/src/main/java/org/richfaces/samples/dropdownmenu/Bean.java 2009-11-09 08:44:51 UTC (rev 15852)
+++ branches/sandbox/3.3.X_JSF2/samples/dropdownmenu-sample/src/main/java/org/richfaces/samples/dropdownmenu/Bean.java 2009-11-09 12:53:55 UTC (rev 15853)
@@ -22,7 +22,6 @@
package org.richfaces.samples.dropdownmenu;
import javax.faces.event.ActionEvent;
-import org.richfaces.component.UIMenuItem;
/**
* @author $Autor$
@@ -101,7 +100,7 @@
public void setHorizontalOffsets(String horizontalOffsets) {
this.horizontalOffsets = horizontalOffsets;
- setHorizontalOffset(new Integer(this.horizontalOffsets).intValue());
+ setHorizontalOffset(Integer.parseInt(this.horizontalOffsets));
}
public String getHorizontalOffsets() {
@@ -110,7 +109,7 @@
public void setVerticalOffsets(String verticalOffsets) {
this.verticalOffsets = verticalOffsets;
- setVerticalOffset(new Integer(this.verticalOffsets).intValue());
+ setVerticalOffset(Integer.parseInt(this.verticalOffsets));
}
public String getVerticalOffsets() {
Modified: branches/sandbox/3.3.X_JSF2/ui/menu-components/src/main/java/org/richfaces/renderkit/html/MenuItemRendererBase.java
===================================================================
--- branches/sandbox/3.3.X_JSF2/ui/menu-components/src/main/java/org/richfaces/renderkit/html/MenuItemRendererBase.java 2009-11-09 08:44:51 UTC (rev 15852)
+++ branches/sandbox/3.3.X_JSF2/ui/menu-components/src/main/java/org/richfaces/renderkit/html/MenuItemRendererBase.java 2009-11-09 12:53:55 UTC (rev 15853)
@@ -49,6 +49,7 @@
import org.richfaces.component.UIMenuItem;
import org.richfaces.component.util.ViewUtil;
import org.richfaces.renderkit.CompositeRenderer;
+import org.richfaces.json.JSONObject;
public class MenuItemRendererBase extends CompositeRenderer {
@@ -354,4 +355,8 @@
ComponentsVariableResolver.getVariables(this, menuItem);
delegate.initializeStyles(context, menuItem, menuItem.isDisabled(), variables);
}
+
+ public static String toJson(Map map) {
+ return new JSONObject(map).toString();
+ }
}
Modified: branches/sandbox/3.3.X_JSF2/ui/menu-components/src/main/templates/org/richfaces/htmlMenuItem.jspx
===================================================================
--- branches/sandbox/3.3.X_JSF2/ui/menu-components/src/main/templates/org/richfaces/htmlMenuItem.jspx 2009-11-09 08:44:51 UTC (rev 15852)
+++ branches/sandbox/3.3.X_JSF2/ui/menu-components/src/main/templates/org/richfaces/htmlMenuItem.jspx 2009-11-09 12:53:55 UTC (rev 15853)
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<f:root
xmlns:f="http://ajax4jsf.org/cdk/template"
- xmlns:c=" http://java.sun.com/jsf/core"
- xmlns:ui=" http://ajax4jsf.org/cdk/ui"
- xmlns:u=" http://ajax4jsf.org/cdk/u"
- xmlns:x=" http://ajax4jsf.org/cdk/x"
+ xmlns:c="http://java.sun.com/jsf/core"
+ xmlns:ui="http://ajax4jsf.org/cdk/ui"
+ xmlns:u="http://ajax4jsf.org/cdk/u"
+ xmlns:x="http://ajax4jsf.org/cdk/x"
baseclass="org.richfaces.renderkit.html.MenuItemRendererBase"
class="org.richfaces.renderkit.html.MenuItemRenderer"
component="org.richfaces.component.UIMenuItem"
@@ -82,8 +82,8 @@
<div id="#{clientId}"
class="#{menuItemClass}"
- onmouseout="RichFaces.Menu.Utils.itemMouseOut(event, this, #{onmouseoutClasses});"
- onmouseover="RichFaces.Menu.Utils.itemMouseOver(event, this, #{onmouseoverClasses});"
+ onmouseout="RichFaces.Menu.Utils.itemMouseOut(event, this, #{this:toJson(onmouseoutClasses)});"
+ onmouseover="RichFaces.Menu.Utils.itemMouseOver(event, this, #{this:toJson(onmouseoverClasses)});"
onclick="#{onclick}"
style="#{menuItemStyle}">
<f:call name="utils.encodeAttributes">
16 years, 8 months
JBoss Rich Faces SVN: r15852 - in branches/sandbox/3.3.X_JSF2: samples/calendar-sample/src/main/webapp/pages and 2 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: Alex.Kolonitsky
Date: 2009-11-09 03:44:51 -0500 (Mon, 09 Nov 2009)
New Revision: 15852
Added:
branches/sandbox/3.3.X_JSF2/samples/calendar-sample/src/main/webapp/pages/RF-8001.jsp
Modified:
branches/sandbox/3.3.X_JSF2/samples/calendar-sample/src/main/java/org/richfaces/CalendarBean.java
branches/sandbox/3.3.X_JSF2/ui/calendar/src/main/java/org/richfaces/renderkit/CalendarRendererBase.java
branches/sandbox/3.3.X_JSF2/ui/calendar/src/main/templates/org/richfaces/htmlCalendar.jspx
Log:
calendar: initialization failed if any facet defined and day markup is default(not redefined).
https://jira.jboss.org/jira/browse/RF-8001
Modified: branches/sandbox/3.3.X_JSF2/samples/calendar-sample/src/main/java/org/richfaces/CalendarBean.java
===================================================================
--- branches/sandbox/3.3.X_JSF2/samples/calendar-sample/src/main/java/org/richfaces/CalendarBean.java 2009-11-06 19:18:31 UTC (rev 15851)
+++ branches/sandbox/3.3.X_JSF2/samples/calendar-sample/src/main/java/org/richfaces/CalendarBean.java 2009-11-09 08:44:51 UTC (rev 15852)
@@ -31,257 +31,265 @@
/**
* 20/07/2007
- *
+ *
* @author Alexej Kushunin
* @mailto: akushunin(a)exadel.com
- *
*/
public class CalendarBean {
- private static final String[] WEEK_DAY_LABELS = new String[] { "Sun *",
- "Mon +", "Tue +", "Wed +", "Thu +", "Fri +", "Sat *" };
- private Locale locale;
+ private static final String[] WEEK_DAY_LABELS = new String[]{"Sun *",
+ "Mon +", "Tue +", "Wed +", "Thu +", "Fri +", "Sat *"};
+ private Locale locale;
- private boolean popup;
- private boolean readonly;
- private boolean showInput;
- private boolean enableManualInput;
- private boolean disabled;
- private boolean showApplyButton;
- private String pattern;
- private Date currentDate;
- private Date selectedDate;
- private String jointPoint;
- private String direction;
- private String boundary;
- private String todayControlMode;
- private boolean showHeader;
- private boolean showFooter;
- private boolean resetTimeOnDateSelect;
+ private boolean popup;
+ private boolean readonly;
+ private boolean showInput;
+ private boolean enableManualInput;
+ private boolean disabled;
+ private boolean showApplyButton;
+ private String pattern;
+ private Date currentDate;
+ private Date selectedDate;
+ private String jointPoint;
+ private String direction;
+ private String boundary;
+ private String todayControlMode;
+ private boolean showApply;
+ private boolean showHeader;
+ private boolean showFooter;
+ private boolean resetTimeOnDateSelect;
- private int counter;
-
-
-
-
- private boolean useCustomDayLabels;
+ private int counter;
- public Locale getLocale() {
- return locale;
- }
- public void setLocale(Locale locale) {
- this.locale = locale;
- }
+ private boolean useCustomDayLabels;
- public boolean isPopup() {
- return popup;
- }
+ public Locale getLocale() {
+ return locale;
+ }
- public void setPopup(boolean popup) {
- this.popup = popup;
- }
+ public void setLocale(Locale locale) {
+ this.locale = locale;
+ }
- public String getPattern() {
- return pattern;
- }
+ public boolean isPopup() {
+ return popup;
+ }
- public void setPattern(String pattern) {
-
- this.pattern = pattern;
- }
+ public void setPopup(boolean popup) {
+ this.popup = popup;
+ }
- public void selectPattern(ValueChangeEvent event) {
- String tPatern = (String) event.getNewValue();
- if (tPatern != null) {
- pattern = tPatern;
- }
- }
+ public String getPattern() {
+ return pattern;
+ }
- public CalendarBean() {
+ public void setPattern(String pattern) {
- locale = Locale.US;
- popup = true;
- pattern = "MMM d, yyyy";
- jointPoint = "bottom-left";
- direction = "bottom-right";
- readonly = true;
- enableManualInput=false;
- showInput=true;
- boundary = "inactive";
- disabled = false;
- todayControlMode = "select";
- resetTimeOnDateSelect = false;
-
- }
-
-
- public boolean isShowInput() {
- return showInput;
- }
+ this.pattern = pattern;
+ }
- public void setShowInput(boolean showInput) {
- this.showInput = showInput;
- }
+ public void selectPattern(ValueChangeEvent event) {
+ String tPatern = (String) event.getNewValue();
+ if (tPatern != null) {
+ pattern = tPatern;
+ }
+ }
- public boolean isEnableManualInput() {
- return enableManualInput;
- }
+ public CalendarBean() {
- public void setEnableManualInput(boolean enableManualInput) {
- this.enableManualInput = enableManualInput;
- }
+ locale = Locale.US;
+ popup = true;
+ pattern = "MMM d, yyyy";
+ jointPoint = "bottom-left";
+ direction = "bottom-right";
+ readonly = true;
+ enableManualInput = false;
+ showInput = true;
+ boundary = "inactive";
+ disabled = false;
+ todayControlMode = "select";
+ resetTimeOnDateSelect = false;
- public boolean isReadonly() {
- return readonly;
- }
+ }
- public void setReadonly(boolean readonly) {
- this.readonly = readonly;
- }
- public void selectLocale(ValueChangeEvent event) {
+ public boolean isShowInput() {
+ return showInput;
+ }
- String tLocale = (String) event.getNewValue();
- if (tLocale != null) {
- String lang = tLocale.substring(0, 2);
- String country = tLocale.substring(3);
- locale = new Locale(lang, country, "");
- }
- }
+ public void setShowInput(boolean showInput) {
+ this.showInput = showInput;
+ }
- public boolean isUseCustomDayLabels() {
- return useCustomDayLabels;
- }
+ public boolean isEnableManualInput() {
+ return enableManualInput;
+ }
- public void setUseCustomDayLabels(boolean useCustomDayLabels) {
- this.useCustomDayLabels = useCustomDayLabels;
- }
+ public void setEnableManualInput(boolean enableManualInput) {
+ this.enableManualInput = enableManualInput;
+ }
- public Object getWeekDayLabelsShort() {
- if (isUseCustomDayLabels()) {
- return WEEK_DAY_LABELS;
- } else {
- return null;
- }
- }
+ public boolean isReadonly() {
+ return readonly;
+ }
- public String getCurrentDateAsText() {
- Date currentDate = getCurrentDate();
- if (currentDate != null) {
- return DateFormat.getDateInstance(DateFormat.FULL).format(
- currentDate);
- }
+ public void setReadonly(boolean readonly) {
+ this.readonly = readonly;
+ }
- return null;
- }
+ public void selectLocale(ValueChangeEvent event) {
- public Date getCurrentDate() {
- return currentDate;
- }
+ String tLocale = (String) event.getNewValue();
+ if (tLocale != null) {
+ String lang = tLocale.substring(0, 2);
+ String country = tLocale.substring(3);
+ locale = new Locale(lang, country, "");
+ }
+ }
- public void setCurrentDate(Date currentDate) {
- this.currentDate = currentDate;
- }
+ public boolean isUseCustomDayLabels() {
+ return useCustomDayLabels;
+ }
- public Date getSelectedDate() {
- return selectedDate;
- }
+ public void setUseCustomDayLabels(boolean useCustomDayLabels) {
+ this.useCustomDayLabels = useCustomDayLabels;
+ }
- public void setSelectedDate(Date selectedDate) {
- this.selectedDate = selectedDate;
- }
+ public Object getWeekDayLabelsShort() {
+ if (isUseCustomDayLabels()) {
+ return WEEK_DAY_LABELS;
+ } else {
+ return null;
+ }
+ }
- public String getJointPoint() {
- return jointPoint;
- }
+ public String getCurrentDateAsText() {
+ Date currentDate = getCurrentDate();
+ if (currentDate != null) {
+ return DateFormat.getDateInstance(DateFormat.FULL).format(
+ currentDate);
+ }
- public void setJointPoint(String jointPoint) {
- this.jointPoint = jointPoint;
- }
+ return null;
+ }
- public void selectJointPoint(ValueChangeEvent event) {
- jointPoint = (String) event.getNewValue();
- }
+ public Date getCurrentDate() {
+ return currentDate;
+ }
- public String getDirection() {
- return direction;
- }
+ public void setCurrentDate(Date currentDate) {
+ this.currentDate = currentDate;
+ }
- public void setDirection(String direction) {
- this.direction = direction;
- }
+ public Date getSelectedDate() {
+ return selectedDate;
+ }
- public void selectDirection(ValueChangeEvent event) {
- direction = (String) event.getNewValue();
- }
+ public void setSelectedDate(Date selectedDate) {
+ this.selectedDate = selectedDate;
+ }
- public String getBoundary() {
- return boundary;
- }
+ public String getJointPoint() {
+ return jointPoint;
+ }
- public void setBoundary(String boundary) {
- this.boundary = boundary;
- }
- public void dcl(CurrentDateChangeEvent event){
- System.out.println(event.getCurrentDateString());
- System.out.println("ajvhckndskncs");
- }
- public void ddd(ValueChangeEvent event){
- System.out.println(event.getOldValue());
- System.out.println(event.getNewValue());
-
- }
+ public void setJointPoint(String jointPoint) {
+ this.jointPoint = jointPoint;
+ }
- public int getCounter() {
- return counter++;
- }
+ public void selectJointPoint(ValueChangeEvent event) {
+ jointPoint = (String) event.getNewValue();
+ }
- public boolean isDisabled() {
- return disabled;
- }
+ public String getDirection() {
+ return direction;
+ }
- public void setDisabled(boolean disabled) {
- this.disabled = disabled;
- }
+ public void setDirection(String direction) {
+ this.direction = direction;
+ }
- public boolean isShowApplyButton() {
- return showApplyButton;
- }
+ public void selectDirection(ValueChangeEvent event) {
+ direction = (String) event.getNewValue();
+ }
- public void setShowApplyButton(boolean showApplyButton) {
- this.showApplyButton = showApplyButton;
- }
+ public String getBoundary() {
+ return boundary;
+ }
- public String getTodayControlMode() {
- return todayControlMode;
- }
+ public void setBoundary(String boundary) {
+ this.boundary = boundary;
+ }
- public void setTodayControlMode(String todayControlMode) {
- this.todayControlMode = todayControlMode;
- }
+ public void dcl(CurrentDateChangeEvent event) {
+ System.out.println(event.getCurrentDateString());
+ System.out.println("ajvhckndskncs");
+ }
- public boolean isShowHeader() {
- return showHeader;
- }
+ public void ddd(ValueChangeEvent event) {
+ System.out.println(event.getOldValue());
+ System.out.println(event.getNewValue());
- public void setShowHeader(boolean showHeader) {
- this.showHeader = showHeader;
- }
+ }
- public boolean isShowFooter() {
- return showFooter;
- }
+ public int getCounter() {
+ return counter++;
+ }
- public void setShowFooter(boolean showFooter) {
- this.showFooter = showFooter;
- }
+ public boolean isDisabled() {
+ return disabled;
+ }
- public boolean isResetTimeOnDateSelect() {
- return resetTimeOnDateSelect;
- }
+ public void setDisabled(boolean disabled) {
+ this.disabled = disabled;
+ }
- public void setResetTimeOnDateSelect(boolean resetTimeOnDateSelect) {
- this.resetTimeOnDateSelect = resetTimeOnDateSelect;
- }
+ public boolean isShowApplyButton() {
+ return showApplyButton;
+ }
+
+ public void setShowApplyButton(boolean showApplyButton) {
+ this.showApplyButton = showApplyButton;
+ }
+
+ public String getTodayControlMode() {
+ return todayControlMode;
+ }
+
+ public void setTodayControlMode(String todayControlMode) {
+ this.todayControlMode = todayControlMode;
+ }
+
+ public boolean isShowHeader() {
+ return showHeader;
+ }
+
+ public void setShowHeader(boolean showHeader) {
+ this.showHeader = showHeader;
+ }
+
+ public boolean isShowFooter() {
+ return showFooter;
+ }
+
+ public void setShowFooter(boolean showFooter) {
+ this.showFooter = showFooter;
+ }
+
+ public boolean isResetTimeOnDateSelect() {
+ return resetTimeOnDateSelect;
+ }
+
+ public void setResetTimeOnDateSelect(boolean resetTimeOnDateSelect) {
+ this.resetTimeOnDateSelect = resetTimeOnDateSelect;
+ }
+
+ public boolean isShowApply() {
+ return showApply;
+ }
+
+ public void setShowApply(boolean showApply) {
+ this.showApply = showApply;
+ }
}
\ No newline at end of file
Added: branches/sandbox/3.3.X_JSF2/samples/calendar-sample/src/main/webapp/pages/RF-8001.jsp
===================================================================
--- branches/sandbox/3.3.X_JSF2/samples/calendar-sample/src/main/webapp/pages/RF-8001.jsp (rev 0)
+++ branches/sandbox/3.3.X_JSF2/samples/calendar-sample/src/main/webapp/pages/RF-8001.jsp 2009-11-09 08:44:51 UTC (rev 15852)
@@ -0,0 +1,27 @@
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="http://labs.jboss.com/jbossrichfaces/ui/calendar" prefix="rich" %>
+<html>
+<head>
+ <title></title>
+</head>
+<body dir="rtl">
+<f:view>
+ <h:form id="f">
+ <rich:calendar value="#{calendarBean.selectedDate}"
+ locale="#{calendarBean.locale}"
+ popup="#{calendarBean.popup}"
+ datePattern="#{calendarBean.pattern}"
+ showApplyButton="#{calendarBean.showApply}">
+
+ <f:facet name="weekDay">
+ <h:outputText value="{weekDayLabelShort}"/>
+ </f:facet>
+ <f:facet name="weekNumber">
+ <h:outputText value="1"/>
+ </f:facet>
+ </rich:calendar>
+ </h:form>
+</f:view>
+</body>
+</html>
\ No newline at end of file
Modified: branches/sandbox/3.3.X_JSF2/ui/calendar/src/main/java/org/richfaces/renderkit/CalendarRendererBase.java
===================================================================
--- branches/sandbox/3.3.X_JSF2/ui/calendar/src/main/java/org/richfaces/renderkit/CalendarRendererBase.java 2009-11-06 19:18:31 UTC (rev 15851)
+++ branches/sandbox/3.3.X_JSF2/ui/calendar/src/main/java/org/richfaces/renderkit/CalendarRendererBase.java 2009-11-09 08:44:51 UTC (rev 15852)
@@ -21,32 +21,6 @@
package org.richfaces.renderkit;
-import java.io.IOException;
-import java.text.DateFormatSymbols;
-import java.text.Format;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-import java.util.Set;
-import java.util.TimeZone;
-
-import javax.el.ValueExpression;
-import javax.faces.application.Application;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import javax.faces.convert.Converter;
-import javax.faces.convert.ConverterException;
-import javax.faces.convert.DateTimeConverter;
-import javax.faces.event.PhaseId;
-
import org.ajax4jsf.context.AjaxContext;
import org.ajax4jsf.event.AjaxEvent;
import org.ajax4jsf.javascript.JSFunction;
@@ -57,12 +31,31 @@
import org.ajax4jsf.renderkit.RendererUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.richfaces.component.TemplateComponent;
import org.richfaces.component.UICalendar;
import org.richfaces.component.util.ComponentUtil;
import org.richfaces.component.util.MessageUtil;
import org.richfaces.context.RequestContext;
import org.richfaces.event.CurrentDateChangeEvent;
+import org.richfaces.json.JSONObject;
+import javax.el.ValueExpression;
+import javax.faces.application.Application;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.convert.DateTimeConverter;
+import javax.faces.event.PhaseId;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.text.DateFormatSymbols;
+import java.text.Format;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
/**
* @author Nick Belaevski - mailto:nbelaevski@exadel.com created 08.06.2007
*
@@ -187,7 +180,7 @@
* Returns hours and minutes from "defaultTime" attribute as a String with
* special format: hours:"value_hours",minutes:"value_minutes"
*
- * @param calendar - UICalendar
+ * @param component - UICalendar
*
* @return hours and minutes from "defaultTime" attribute
*/
@@ -286,7 +279,6 @@
/**
* Creates default <code>DateTimeConverter</code> for the calendar
- * @param calendar - calendar component
*
* @return created converter
*/
@@ -317,7 +309,8 @@
return converter;
}
- protected void doDecode(FacesContext context, UIComponent component) {
+ @Override
+ protected void doDecode(FacesContext context, UIComponent component) {
// TODO Auto-generated method stub
super.doDecode(context, component);
@@ -353,7 +346,8 @@
}
}
- public void encodeChildren(FacesContext context, UIComponent calendar)
+ @Override
+ public void encodeChildren(FacesContext context, UIComponent calendar)
throws IOException {
}
@@ -378,24 +372,54 @@
}
return null;
- }
-
- public void writeMarkupScriptBody(FacesContext context,
- UIComponent component, boolean children) throws IOException {
- writeScriptBody(context, component, children);
}
- public void writeOptionalFacetMarkupScriptBody(FacesContext context,
- UIComponent component, String facetName) throws IOException {
+ public String getMarkupScriptBody(FacesContext context, UIComponent component, boolean children)
+ throws IOException {
- UIComponent facet = component.getFacet(facetName);
- if (facet != null && facet.isRendered()) {
- ResponseWriter writer = context.getResponseWriter();
- writer.writeText(",\n " + facetName + MARKUP_SUFFIX + ": ", null);
- writeMarkupScriptBody(context, facet, false);
- }
- }
+ ResponseWriter writer = context.getResponseWriter();
+ Writer dumpingWriter = new StringWriter();
+ ResponseWriter clonedWriter = writer.cloneWithWriter(dumpingWriter);
+ context.setResponseWriter(clonedWriter);
+ TemplateComponent templateComponent = null;
+ if (component instanceof TemplateComponent) {
+ templateComponent = (TemplateComponent) component;
+ }
+
+ try {
+ if (templateComponent != null) {
+ templateComponent.startTemplateEncode();
+ }
+
+ if (children) {
+ this.renderChildren(context, component);
+ } else {
+ this.renderChild(context, component);
+ }
+ } finally {
+ if (templateComponent != null) {
+ templateComponent.endTemplateEncode();
+ }
+
+ clonedWriter.flush();
+ context.setResponseWriter(writer);
+ }
+
+ return dumpingWriter.toString();
+ }
+
+ public String getOptionalFacetMarkupScriptBody(FacesContext context,
+ UIComponent component, String facetName) throws IOException {
+
+ UIComponent facet = component.getFacet(facetName);
+ if (facet != null && facet.isRendered()) {
+ return getMarkupScriptBody(context, facet, false);
+ }
+
+ return null;
+ }
+
public void dayCellClass(FacesContext context, UIComponent component)
throws IOException {
// if cellWidth/Height is set send dayCellClass to script
@@ -443,18 +467,31 @@
return null;
}
- public void writeFacetMarkupScriptBody(FacesContext context,
- UIComponent component, String facetName) throws IOException {
+ public void writeFacetMarkup(FacesContext context, UIComponent component) throws IOException {
+ Map<String, String> jsonMap = new HashMap();
+ if (component.getChildCount() != 0) {
+ jsonMap.put("dayListMarkup", getMarkupScriptBody(context, component, true));
+ }
- UIComponent facet = component.getFacet(facetName);
- if (facet != null && facet.isRendered()) {
- ResponseWriter writer = context.getResponseWriter();
- writer.writeText(",\n " + facetName + MARKUP_SUFFIX + ": ", null);
- writeMarkupScriptBody(context, facet, false);
- }
- }
+ addFacetMarkupScriptBody(context, component, jsonMap, "optionalHeader");
+ addFacetMarkupScriptBody(context, component, jsonMap, "optionalFooter");
- public void writePreloadBody(FacesContext context, UICalendar calendar)
+ addFacetMarkupScriptBody(context, component, jsonMap, "weekDay");
+ addFacetMarkupScriptBody(context, component, jsonMap, "weekNumber");
+ addFacetMarkupScriptBody(context, component, jsonMap, "header");
+ addFacetMarkupScriptBody(context, component, jsonMap, "footer");
+
+ context.getResponseWriter().write(new JSONObject(jsonMap).toString());
+ }
+
+ private void addFacetMarkupScriptBody(FacesContext context, UIComponent component, Map<String, String> jsonMap, String facetName) throws IOException {
+ String res = getOptionalFacetMarkupScriptBody(context, component, facetName);
+ if (res != null) {
+ jsonMap.put(facetName, res);
+ }
+ }
+
+ public void writePreloadBody(FacesContext context, UICalendar calendar)
throws IOException {
Object preload = calendar.getPreload();
if (preload != null) {
Modified: branches/sandbox/3.3.X_JSF2/ui/calendar/src/main/templates/org/richfaces/htmlCalendar.jspx
===================================================================
--- branches/sandbox/3.3.X_JSF2/ui/calendar/src/main/templates/org/richfaces/htmlCalendar.jspx 2009-11-06 19:18:31 UTC (rev 15851)
+++ branches/sandbox/3.3.X_JSF2/ui/calendar/src/main/templates/org/richfaces/htmlCalendar.jspx 2009-11-09 08:44:51 UTC (rev 15852)
@@ -193,24 +193,9 @@
</c:if>
<c:if test="#{empty options}">
{}
- </c:if>, {
- <jsp:scriptlet>/*<![CDATA[*/
- if (component.getChildCount() != 0) {
- /*]]>*/</jsp:scriptlet>
- \n dayListMarkup:
- <jsp:scriptlet>/*<![CDATA[*/
- writeMarkupScriptBody(context, component, true);
- }
- /*]]>*/</jsp:scriptlet>
-
- <f:call name="writeOptionalFacetMarkupScriptBody"><f:parameter value="optionalHeader" /></f:call>
- <f:call name="writeOptionalFacetMarkupScriptBody"><f:parameter value="optionalFooter" /></f:call>
-
- <f:call name="writeFacetMarkupScriptBody"><f:parameter value="weekDay" /></f:call>
- <f:call name="writeFacetMarkupScriptBody"><f:parameter value="weekNumber" /></f:call>
- <f:call name="writeFacetMarkupScriptBody"><f:parameter value="header" /></f:call>
- <f:call name="writeFacetMarkupScriptBody"><f:parameter value="footer" /></f:call>
- }).load(
+ </c:if>,
+ <f:call name="writeFacetMarkup" />
+ ).load(
<jsp:scriptlet>/*<![CDATA[*/
writePreloadBody(context, component);
/*]]>*/</jsp:scriptlet>
16 years, 8 months
JBoss Rich Faces SVN: r15851 - in root: framework/trunk/impl/src/main/java/org/ajax4jsf/renderkit and 3 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2009-11-06 14:18:31 -0500 (Fri, 06 Nov 2009)
New Revision: 15851
Modified:
root/framework/trunk/impl/src/main/java/org/ajax4jsf/component/AjaxActionComponent.java
root/framework/trunk/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java
root/framework/trunk/impl/src/main/java/org/richfaces/context/PartialViewContextImpl.java
root/framework/trunk/impl/src/main/resources/META-INF/resources/richfaces.js
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/AjaxCommandRendererBase.java
Log:
https://jira.jboss.org/jira/browse/RF-7823
Modified: root/framework/trunk/impl/src/main/java/org/ajax4jsf/component/AjaxActionComponent.java
===================================================================
--- root/framework/trunk/impl/src/main/java/org/ajax4jsf/component/AjaxActionComponent.java 2009-11-06 18:17:16 UTC (rev 15850)
+++ root/framework/trunk/impl/src/main/java/org/ajax4jsf/component/AjaxActionComponent.java 2009-11-06 19:18:31 UTC (rev 15851)
@@ -86,6 +86,7 @@
ajaxContext.getResponseDataMap().put(FOCUS_DATA_ID, focus);
}
+ ajaxContext.setOnbeforedomupdate(getOnbeforedomupdate());
ajaxContext.setOncomplete(getOncomplete());
}
}
Modified: root/framework/trunk/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java
===================================================================
--- root/framework/trunk/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java 2009-11-06 18:17:16 UTC (rev 15850)
+++ root/framework/trunk/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java 2009-11-06 19:18:31 UTC (rev 15851)
@@ -27,6 +27,7 @@
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Locale;
@@ -38,6 +39,7 @@
import javax.faces.component.UIForm;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
+import javax.faces.context.PartialResponseWriter;
import javax.faces.context.ResponseWriter;
import javax.servlet.http.HttpServletResponse;
@@ -51,6 +53,7 @@
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSFunctionDefinition;
import org.ajax4jsf.javascript.JSReference;
+import org.ajax4jsf.javascript.ScriptUtils;
import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.ajax4jsf.util.ServicesUtils;
import org.richfaces.log.RichfacesLogger;
@@ -62,7 +65,12 @@
* Some utilites for render AJAX components.
*/
public final class AjaxRendererUtils {
- public static final String AJAX_ABORT_ATTR = "ignoreDupResponses";
+
+ private static final String BEFOREDOMUPDATE_ELEMENT_NAME = "beforedomupdate";
+ private static final String COMPLETE_ELEMENT_NAME = "complete";
+ private static final String DATA_ELEMENT_NAME = "data";
+
+ public static final String AJAX_ABORT_ATTR = "ignoreDupResponses";
public static final String AJAX_AREAS_RENDERED = "org.ajax4jsf.areas.rendered";
public static final String AJAX_DELAY_ATTR = "requestDelay";
@@ -115,6 +123,7 @@
public static final String STATUS_ATTR_NAME = "status";
public static final String VALUE_ATTR = "value";
+ public final static String EXTENSION_ID = "org.richfaces.extension";
public static final String AJAX_COMPONENT_ID_PARAMETER = "org.richfaces.ajax.component";
public static final String BEHAVIOR_EVENT_PARAMETER = "javax.faces.behavior.event";
@@ -1118,4 +1127,64 @@
public static void addRegionsFromComponent(UIComponent component, FacesContext facesContext) {
AjaxContext.getCurrentInstance(facesContext).addRegionsFromComponent(component);
}
+
+ private static void startExtensionElementIfNecessary(
+ PartialResponseWriter partialResponseWriter,
+ Map<String, String> attributes,
+ boolean[] writingState) throws IOException {
+
+ if (!writingState[0]) {
+ writingState[0] = true;
+
+ partialResponseWriter.startExtension(attributes);
+ }
+ }
+
+ private static void endExtensionElementIfNecessary(
+ PartialResponseWriter partialResponseWriter,
+ boolean[] writingState) throws IOException {
+
+ if (writingState[0]) {
+ writingState[0] = false;
+
+ partialResponseWriter.endExtension();
+ }
+ }
+
+ public static void renderAjaxExtensions(FacesContext facesContext, UIComponent component) throws IOException {
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(facesContext);
+
+ Map<String, String> attributes = Collections.singletonMap(HTML.ID_ATTRIBUTE,
+ facesContext.getExternalContext().encodeNamespace(EXTENSION_ID));
+ PartialResponseWriter writer = facesContext.getPartialViewContext().getPartialResponseWriter();
+ boolean[] writingState = new boolean[] {false};
+
+ Object onbeforedomupdate = ajaxContext.getOnbeforedomupdate();
+ if (onbeforedomupdate != null) {
+ startExtensionElementIfNecessary(writer, attributes, writingState);
+ writer.startElement(BEFOREDOMUPDATE_ELEMENT_NAME, component);
+ writer.writeText(onbeforedomupdate, null);
+ writer.endElement(BEFOREDOMUPDATE_ELEMENT_NAME);
+ }
+
+ Object oncomplete = ajaxContext.getOncomplete();
+ if (oncomplete != null) {
+ startExtensionElementIfNecessary(writer, attributes, writingState);
+ writer.startElement(COMPLETE_ELEMENT_NAME, component);
+ writer.writeText(oncomplete, null);
+ writer.endElement(COMPLETE_ELEMENT_NAME);
+ }
+
+ Object responseData = ajaxContext.getResponseData();
+ if (responseData != null) {
+ startExtensionElementIfNecessary(writer, attributes, writingState);
+ writer.startElement(DATA_ELEMENT_NAME, component);
+ writer.writeText(ScriptUtils.toScript(responseData), null);
+ writer.endElement(DATA_ELEMENT_NAME);
+ }
+
+ endExtensionElementIfNecessary(writer, writingState);
+
+ }
+
}
Modified: root/framework/trunk/impl/src/main/java/org/richfaces/context/PartialViewContextImpl.java
===================================================================
--- root/framework/trunk/impl/src/main/java/org/richfaces/context/PartialViewContextImpl.java 2009-11-06 18:17:16 UTC (rev 15850)
+++ root/framework/trunk/impl/src/main/java/org/richfaces/context/PartialViewContextImpl.java 2009-11-06 19:18:31 UTC (rev 15851)
@@ -47,9 +47,7 @@
import javax.faces.event.PhaseId;
import org.ajax4jsf.component.AjaxOutput;
-import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.javascript.ScriptUtils;
-import org.ajax4jsf.renderkit.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.richfaces.log.RichfacesLogger;
import org.slf4j.Logger;
@@ -65,12 +63,6 @@
private static final String PARTIAL_AJAX = "partial/ajax";
private static final String PARTIAL_PROCESS = "partial/process";
- private final static String EXTENSION_ID = "richfaces.extensions";
-
- private static final String BEFOREDOMUPDATE_ELEMENT_NAME = "beforedomupdate";
- private static final String COMPLETE_ELEMENT_NAME = "complete";
- private static final String DATA_ELEMENT_NAME = "data";
-
private static final String ORIGINAL_WRITER = "org.richfaces.PartialViewContextImpl.ORIGINAL_WRITER";
private FacesContext facesContext;
@@ -254,11 +246,11 @@
processComponents(viewRoot, phaseId, ids, facesContext);
}
+ renderState(facesContext);
+
//TODO - render extensions for renderAll?
renderExtensions(facesContext, viewRoot);
- renderState(facesContext);
-
writer.endDocument();
} catch (IOException ex) {
//TODO - review?
@@ -400,35 +392,7 @@
}
protected void renderExtensions(FacesContext context, UIComponent component) throws IOException {
- AjaxContext ajaxContext = AjaxContext.getCurrentInstance(facesContext);
- Map<String, String> attributes = Collections.singletonMap(HTML.ID_ATTRIBUTE,
- context.getExternalContext().encodeNamespace(EXTENSION_ID));
- PartialResponseWriter writer = getPartialResponseWriter();
-
- writer.startExtension(attributes);
-
- Object onbeforedomupdate = ajaxContext.getOnbeforedomupdate();
- if (onbeforedomupdate != null) {
- writer.startElement(BEFOREDOMUPDATE_ELEMENT_NAME, component);
- writer.writeText(onbeforedomupdate, null);
- writer.endElement(BEFOREDOMUPDATE_ELEMENT_NAME);
- }
-
- Object oncomplete = ajaxContext.getOncomplete();
- if (oncomplete != null) {
- writer.startElement(COMPLETE_ELEMENT_NAME, component);
- writer.writeText(oncomplete, null);
- writer.endElement(COMPLETE_ELEMENT_NAME);
- }
-
- Object responseData = ajaxContext.getResponseData();
- if (responseData != null) {
- writer.startElement(DATA_ELEMENT_NAME, component);
- writer.writeText(ScriptUtils.toScript(responseData), null);
- writer.endElement(DATA_ELEMENT_NAME);
- }
-
- writer.endExtension();
+ AjaxRendererUtils.renderAjaxExtensions(context, component);
}
private void assertNotReleased() {
Modified: root/framework/trunk/impl/src/main/resources/META-INF/resources/richfaces.js
===================================================================
--- root/framework/trunk/impl/src/main/resources/META-INF/resources/richfaces.js 2009-11-06 18:17:16 UTC (rev 15850)
+++ root/framework/trunk/impl/src/main/resources/META-INF/resources/richfaces.js 2009-11-06 19:18:31 UTC (rev 15851)
@@ -384,9 +384,60 @@
};
}
};
+
+ /**
+ * curry (g, a) (b) -> g(a, b)
+ */
+ var curry = function(g, a) {
+ var _g = g;
+ var _a = a;
+
+ return function(b) {
+ _g(_a, b);
+ };
+ };
+ var createEventHandler = function(handlerCode) {
+ if (handlerCode) {
+ return new Function("event", "data", handlerCode);
+ }
+
+ return null;
+ };
+
//TODO take events just from .java code using EL-expression
- var AJAX_EVENTS = ['begin', 'complete', 'beforedomupdate'];
+ var AJAX_EVENTS = (function() {
+ var serverEventHandler = function(clientHandler, event) {
+ var xml = jQuery("partial-response > extension#org\\.richfaces\\.extension", event.responseXML);
+
+ var serverHandler = createEventHandler(xml.children(event.type).text());
+ xml.end();
+
+ var dataString = xml.children("data").text();
+ xml.end();
+
+ var data = null;
+ if (dataString) {
+ try {
+ data = window["eval"]("(" + dataString + ")");
+ } catch (e) {
+ richfaces.log.warn("Error evaluating custom response data: " + e.message);
+ }
+ }
+
+ if (serverHandler) {
+ serverHandler.call(window, event, data);
+ } else if (clientHandler) {
+ clientHandler.call(window, event, data);
+ }
+ };
+
+ return {
+ 'begin': null,
+ 'complete': serverEventHandler,
+ 'beforedomupdate': serverEventHandler
+ }
+ }());
richfaces.ajax = function(source, event, options) {
options = options || {};
@@ -402,13 +453,17 @@
var eventHandlers;
- for (var i = 0; i < AJAX_EVENTS.length; i++) {
- var eventName = AJAX_EVENTS[i];
- var eventHandlerOption = options[eventName];
+ for (var eventName in AJAX_EVENTS) {
+ var handler = createEventHandler(options[eventName]);
+
+ var serverHandler = AJAX_EVENTS[eventName];
+ if (serverHandler) {
+ handler = curry(serverHandler, handler);
+ }
- if (eventHandlerOption) {
+ if (handler) {
eventHandlers = eventHandlers || {};
- eventHandlers[eventName] = new Function('event', eventHandlerOption);
+ eventHandlers[eventName] = handler;
}
}
Modified: root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/AjaxCommandRendererBase.java
===================================================================
--- root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/AjaxCommandRendererBase.java 2009-11-06 18:17:16 UTC (rev 15850)
+++ root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/AjaxCommandRendererBase.java 2009-11-06 19:18:31 UTC (rev 15851)
@@ -39,9 +39,7 @@
import org.ajax4jsf.renderkit.AjaxEventOptions;
import org.ajax4jsf.renderkit.HandlersChain;
import org.ajax4jsf.renderkit.RendererBase;
-
import org.richfaces.log.RichfacesLogger;
-
import org.slf4j.Logger;
/**
16 years, 8 months
JBoss Rich Faces SVN: r15850 - root/examples-sandbox/trunk/components/tables/src/main/webapp.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2009-11-06 13:17:16 -0500 (Fri, 06 Nov 2009)
New Revision: 15850
Modified:
root/examples-sandbox/trunk/components/tables/src/main/webapp/home.xhtml
Log:
add subTable header facet
Modified: root/examples-sandbox/trunk/components/tables/src/main/webapp/home.xhtml
===================================================================
--- root/examples-sandbox/trunk/components/tables/src/main/webapp/home.xhtml 2009-11-06 18:14:18 UTC (rev 15849)
+++ root/examples-sandbox/trunk/components/tables/src/main/webapp/home.xhtml 2009-11-06 18:17:16 UTC (rev 15850)
@@ -42,10 +42,18 @@
</rich:column>
<rich:subTable var="company" value="#{record.company}" rows="20">
+ <f:facet name="header">
+ <rich:colGroup id="headerFacet1" >
+ <rich:column><h:outputText id="headerFacet12" value="company"> </h:outputText></rich:column>
+ <rich:column><h:outputText id="headerFacet13" value="office location"></h:outputText></rich:column>
+ <rich:column><h:outputText id="headerFacet14" value="phone"></h:outputText></rich:column>
+ </rich:colGroup>
+ </f:facet>
+
<rich:column id="column_company_name">
<h:outputText value="#{company.name}" />
</rich:column>
-
+
<rich:column id="column_company_state">
<h:outputText value="#{company.state}" />
</rich:column>
16 years, 8 months
JBoss Rich Faces SVN: r15849 - in root/ui-sandbox/trunk/components/tables/ui/src/main: java/org/richfaces/renderkit and 1 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2009-11-06 13:14:18 -0500 (Fri, 06 Nov 2009)
New Revision: 15849
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTable.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTableBase.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ElementEncodeListener.java
root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/table.css
Log:
add subTable header facet support
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTable.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTable.java 2009-11-06 17:32:08 UTC (rev 15848)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTable.java 2009-11-06 18:14:18 UTC (rev 15849)
@@ -1,5 +1,7 @@
package org.richfaces.component;
+import javax.faces.component.UIComponent;
+
/**
* @author Anton Belevich
*
@@ -18,4 +20,55 @@
public String getFirstRowSkinClass() {
return "rich-table-firstrow";
}
-}
\ No newline at end of file
+
+ public String getHeaderCellSkinClass() {
+ return "rich-table-header-cell";
+ }
+
+ public String getHeaderRowSkinClass() {
+ return "rich-table-header-continue";
+ }
+
+ public String getHeaderFirstRowSkinClass() {
+ return "rich-table-header";
+ }
+
+ public String getColumnHeaderCellSkinClass() {
+ return "rich-table-subheader-cell";
+ }
+
+ public String getColumnHeaderSkinClass() {
+ return "rich-table-subheader";
+ }
+
+ @Override
+ public String getFooterCellSkinClass() {
+ return "rich-table-footer-cell";
+ }
+
+ @Override
+ public String getFooterRowSkinClass() {
+ return "rich-table-footer-continue";
+ }
+
+ @Override
+ public String getFooterFirstRowSkinClass() {
+ return "rich-table-footer";
+ }
+
+ @Override
+ public String getColumnFooterCellSkinClass() {
+ return "rich-table-subfooter-cell";
+ }
+
+ @Override
+ public String getColumnFooterSkinClass() {
+ return "rich-table-subfooter-cell";
+ }
+
+
+
+ public UIComponent getCaption() {
+ return getFacet("caption");
+ }
+}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTableBase.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTableBase.java 2009-11-06 17:32:08 UTC (rev 15848)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTableBase.java 2009-11-06 18:14:18 UTC (rev 15849)
@@ -29,10 +29,28 @@
return getFacet("footer");
}
- public UIComponent getCaption() {
- return getFacet("caption");
- }
+ public abstract String getHeaderCellSkinClass();
+ public abstract String getHeaderRowSkinClass();
+
+ public abstract String getHeaderFirstRowSkinClass();
+
+ public abstract String getColumnHeaderCellSkinClass();
+
+ public abstract String getColumnHeaderSkinClass();
+
+ public abstract String getFooterCellSkinClass();
+
+ public abstract String getFooterRowSkinClass();
+
+ public abstract String getFooterFirstRowSkinClass();
+
+ public abstract String getColumnFooterCellSkinClass();
+
+ public abstract String getColumnFooterSkinClass();
+
+
+
@Override
public boolean getRendersChildren() {
return true;
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java 2009-11-06 17:32:08 UTC (rev 15848)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java 2009-11-06 18:14:18 UTC (rev 15849)
@@ -84,7 +84,52 @@
}
public String getFirstRowSkinClass() {
- return "rich-subtable-firstrow";
+ return "rich-subtable-first-row";
}
+ public String getHeaderCellSkinClass() {
+ return "rich-subtable-header-cell";
+ }
+
+ public String getHeaderRowSkinClass() {
+ return "rich-subtable-header-continue";
+ }
+
+ public String getHeaderFirstRowSkinClass() {
+ return "rich-subtable-header";
+ }
+
+ public String getColumnHeaderCellSkinClass() {
+ return "rich-subtable-subheader-cell";
+ }
+
+ public String getColumnHeaderSkinClass() {
+ return "rich-subtable-subheader";
+ }
+
+ @Override
+ public String getFooterCellSkinClass() {
+ return "rich-subtable-footer-cell";
+ }
+
+ @Override
+ public String getFooterRowSkinClass() {
+ return "rich-subtable-footer-continue";
+ }
+
+ @Override
+ public String getFooterFirstRowSkinClass() {
+ return "rich-subtable-header";
+ }
+
+ @Override
+ public String getColumnFooterCellSkinClass() {
+ return "rich-subtable-subfooter-cell";
+ }
+
+ @Override
+ public String getColumnFooterSkinClass() {
+ return "rich-subtable-subfooter-cell";
+ }
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2009-11-06 17:32:08 UTC (rev 15848)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2009-11-06 18:14:18 UTC (rev 15849)
@@ -14,6 +14,7 @@
import org.richfaces.component.Row;
import org.richfaces.component.UIDataTableBase;
import org.richfaces.component.UIDataTable;
+import org.richfaces.component.UISubTable;
@ResourceDependencies({
@ResourceDependency(name = "datatable.js"),
@@ -27,35 +28,37 @@
Object key = dataTable.getRowKey();
dataTable.captureOrigValue(context);
dataTable.setRowKey(context, null);
+
+ if(dataTable instanceof UIDataTable) {
+ encodeCaption(writer, context, (UIDataTable)dataTable);
+ //TODO nick - do we need this element if "columnsWidth" is absent?
+ //TODO nick - use constants from HTML class for attribute/element names
+ writer.startElement("colgroup", dataTable);
+ int columns = getColumnsCount(dataTable);
- encodeCaption(writer, context, dataTable);
+ writer.writeAttribute(HTML.SPAN_ELEM, String.valueOf(columns), null);
+ String columnsWidth = (String) dataTable.getAttributes().get("columnsWidth");
- //TODO nick - do we need this element if "columnsWidth" is absent?
- //TODO nick - use constants from HTML class for attribute/element names
- writer.startElement("colgroup", dataTable);
- int columns = getColumnsCount(dataTable);
-
- writer.writeAttribute(HTML.SPAN_ELEM, String.valueOf(columns), null);
- String columnsWidth = (String) dataTable.getAttributes().get("columnsWidth");
-
- if (null != columnsWidth) {
- String[] widths = columnsWidth.split(",");
- for (int i = 0; i < widths.length; i++) {
- writer.startElement("col", dataTable);
- writer.writeAttribute("width", widths[i], null);
- writer.endElement("col");
- }
+ if (null != columnsWidth) {
+ String[] widths = columnsWidth.split(",");
+ for (int i = 0; i < widths.length; i++) {
+ writer.startElement("col", dataTable);
+ writer.writeAttribute("width", widths[i], null);
+ writer.endElement("col");
+ }
+ }
+ writer.endElement("colgroup");
+
}
- writer.endElement("colgroup");
- encodeHeader(writer, context, dataTable, columns);
- encodeFooter(writer, context, dataTable, columns);
+ encodeHeader(writer, context, dataTable);
+ encodeFooter(writer, context, dataTable);
dataTable.setRowKey(context, key);
dataTable.restoreOrigValue(context);
-
}
+
public void encodeRows(FacesContext context, UIDataTableBase dataTable) throws IOException {
RowHolder holder = new RowHolder(dataTable);
@@ -98,6 +101,10 @@
childRowHolder.setCellClass(childRow.getCellSkinClass());
}
childRowHolder.setHeaderRow(rowHolder.isHeaderRow());
+
+ if(child instanceof UISubTable) {
+ encodeHeader(writer, context, (UISubTable)child);
+ }
encodeRows(context, childRow, childRowHolder);
} else if(child instanceof UIColumn) {
@@ -245,7 +252,7 @@
encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, styleClass);
}
- public void encodeCaption(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
+ public void encodeCaption(ResponseWriter writer, FacesContext context, UIDataTable dataTable) throws IOException {
UIComponent caption = dataTable.getCaption();
@@ -275,78 +282,108 @@
writer.endElement(HTML.CAPTION_ELEMENT);
}
+
+ public void encodeFooter(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
- public void encodeFooter(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable, int columns) throws IOException {
-
Iterator<UIComponent> tableColumns = dataTable.columns();
UIComponent footer = dataTable.getFooter();
-
boolean columnFacetPresent = isColumnFacetPresent(dataTable, "footer");
-
+
if ((footer != null && footer.isRendered()) || columnFacetPresent) {
-
- writer.startElement(HTML.TFOOT_ELEMENT, dataTable);
+ boolean encodeTfoot = (dataTable instanceof UIDataTable);
+ String cellElement = HTML.TD_ELEM;
+
+ if(encodeTfoot) {
+ writer.startElement(HTML.TFOOT_ELEMENT, dataTable);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-table-tfoot", null);
+ cellElement = HTML.TH_ELEM;
+ }
+
String footerClass = (String) dataTable.getAttributes().get("footerClass");
-
+ int columns = getColumnsCount(dataTable);
+
if (columnFacetPresent) {
writer.startElement(HTML.TR_ELEMENT, dataTable);
- encodeStyleClass(writer, context, dataTable, "footerClass", "rich-table-subfooter");
- //TODO nick - use "th" instead of "td"?
- //TODO nick - rename method "encodeHeaderFacets"
- encodeHeaderFacets(context, writer, tableColumns, "rich-table-subfootercell",
- footerClass, "footer", HTML.TD_ELEM, columns);
- writer.endElement(HTML.TR_ELEMENT);
+ encodeStyleClass(writer, context, dataTable, "footerClass", dataTable.getColumnFooterSkinClass());
+ //TODO nick - rename method "encodeHeaderFacets"
+ encodeHeaderFacets(context, writer, tableColumns, dataTable.getColumnFooterCellSkinClass(),
+ footerClass, "footer", cellElement, columns);
+ writer.endElement(HTML.TR_ELEMENT);
}
-
if (footer != null && footer.isRendered()) {
- //TODO nick - use "th" instead of "td"?
//TODO nick - rename method "encodeTableHeaderFacet"
encodeTableHeaderFacet(context, columns, writer, footer,
- "rich-table-footer",
- "rich-table-footer-continue",
- "rich-table-footercell",
- footerClass, HTML.TH_ELEM);
+ dataTable.getFooterFirstRowSkinClass(),
+ dataTable.getFooterRowSkinClass(),
+ dataTable.getFooterCellSkinClass(),
+ footerClass, cellElement);
}
-
- writer.endElement(HTML.TFOOT_ELEMENT);
- }
- }
+
+ if(encodeTfoot) {
+ writer.endElement(HTML.TFOOT_ELEMENT);
+ }
+ }
+
+ }
- public void encodeHeader(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable, int columns) throws IOException {
+ public void encodeHeader(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
UIComponent header = dataTable.getHeader();
- boolean isEncodeHeaders = isEncodeHeaders(dataTable);
-
+ boolean isEncodeHeaders = isEncodeHeaders(dataTable);
+
+ boolean encodeThead = (dataTable instanceof UIDataTable);
+
if ((header != null && header.isRendered()) || isEncodeHeaders) {
- writer.startElement(HTML.THEAD_ELEMENT, dataTable);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-table-thead", null);
-
+ String cellElement = HTML.TD_ELEM;
+
+ if(encodeThead) {
+ writer.startElement(HTML.THEAD_ELEMENT, dataTable);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-table-thead", null);
+ cellElement = HTML.TH_ELEM;
+
+ }
+ // TODO anton - maybe we should have separate css class for column header???
String headerClass = (String) dataTable.getAttributes().get("headerClass");
-
+
+ int columns = getColumnsCount(dataTable);
+
if (header != null && header.isRendered()) {
- encodeTableHeaderFacet(context, columns, writer, header,
- "rich-table-header",
- //TODO nick - rename classes!!!
- "rich-table-header-continue",
- "rich-table-headercell",
- headerClass, HTML.TH_ELEM);
+
+ encodeTableHeaderFacet(context, columns, writer, header,
+ dataTable.getHeaderFirstRowSkinClass(),
+ dataTable.getHeaderRowSkinClass(),
+ dataTable.getHeaderCellSkinClass(),
+// "rich-table-header",
+ //TODO nick - rename classes!!!
+// "rich-table-header-continue",
+// "rich-table-headercell",
+ headerClass, cellElement);
}
if (isEncodeHeaders) {
writer.startElement(HTML.TR_ELEMENT, dataTable);
- encodeStyleClass(writer, context, dataTable, "headerClass", "rich-table-subheader");
- encodeHeaderFacets(context, writer, dataTable.columns(), "rich-table-subheadercell", headerClass, "header", HTML.TH_ELEM, columns);
+ encodeStyleClass(writer, context, dataTable, "headerClass", dataTable.getColumnHeaderSkinClass());//"rich-table-subheader");
+ encodeHeaderFacets(context, writer, dataTable.columns(), dataTable.getColumnHeaderCellSkinClass()/*"rich-table-subheadercell"*/, headerClass, "header", cellElement, columns);
writer.endElement(HTML.TR_ELEMENT);
}
-
- writer.endElement(HTML.THEAD_ELEMENT);
+
+ if(encodeThead) {
+ writer.endElement(HTML.THEAD_ELEMENT);
+ }
}
+
}
+ public void encodeSubTableHeader(ResponseWriter writer, FacesContext context, UIDataTable table){
+ }
+
+ public void encodeSubTableFooter(ResponseWriter writer, FacesContext context, UIDataTable table) {
+ }
+
protected void encodeTableHeaderFacet(FacesContext context, int columns, ResponseWriter writer, UIComponent footer,
String skinFirstRowClass, String skinRowClass, String skinCellClass, String footerClass, String element)
throws IOException {
@@ -383,6 +420,7 @@
if(columns > 0) {
writer.writeAttribute("colspan", String.valueOf(columns), null);
}
+
writer.writeAttribute("scope", "colgroup", null);
renderChild(context, footer);
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ElementEncodeListener.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ElementEncodeListener.java 2009-11-06 17:32:08 UTC (rev 15848)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ElementEncodeListener.java 2009-11-06 18:14:18 UTC (rev 15849)
@@ -34,10 +34,10 @@
public void encodeTableBodyEnd(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
- public void encodeCaption(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
+// public void encodeCaption(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
- public void encodeHeader(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable, int columns) throws IOException;
+ public void encodeHeader(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
- public void encodeFooter(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable, int columns) throws IOException;
+ public void encodeFooter(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/table.css
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/table.css 2009-11-06 17:32:08 UTC (rev 15848)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/table.css 2009-11-06 18:14:18 UTC (rev 15849)
@@ -44,7 +44,7 @@
.rich-table-header-continue{
}
-.rich-table-headercell{
+.rich-table-header-cell{
border-bottom:1px solid #C0C0C0;
border-right:1px solid #C0C0C0;
color:#000000;
@@ -58,7 +58,7 @@
.rich-table-subheader{
}
-.rich-table-subheadercell{
+.rich-table-subheader-cell{
border-bottom:1px solid #C0C0C0;
border-right:1px solid #C0C0C0;
color:#00000;
@@ -67,7 +67,7 @@
padding:4px;
}
-.rich-table-subfootercell{
+.rich-table-subfooter-cell{
border-bottom:1px solid #C0C0C0;
border-right:1px solid #C0C0C0;
color:#00000;
@@ -86,7 +86,7 @@
.rich-table-footer-continue{
}
-.rich-table-footercell{
+.rich-table-footer-cell{
border-bottom:1px solid #C0C0C0;
border-right:1px solid #C0C0C0;
color:#000000;
@@ -100,9 +100,25 @@
.rich-subtable-footer{
}
-.rich-subtable-footercell{
+.rich-subtable-footer-cell{
+}
+
+.rich-subtable-header {
+ background-color: grey;
+
}
+
+.rich-subtable-header-cell {
+ border-bottom:1px solid #C0C0C0;
+ border-right:1px solid #C0C0C0;
+ color:#000000;
+ font-family:Arial,Verdana,sans-serif;
+ font-size:11px;
+ font-weight:bold;
+ padding:4px;
+ text-align:left;
+}
<?xml version="1.0" encoding="UTF-8"?>
16 years, 8 months
JBoss Rich Faces SVN: r15848 - in branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test: java/org/jboss/richfaces/integrationTest/ajaxForm and 13 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: ppitonak(a)redhat.com
Date: 2009-11-06 12:32:08 -0500 (Fri, 06 Nov 2009)
New Revision: 15848
Modified:
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/AbstractSeleniumRichfacesTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/ajaxForm/AjaxFormTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/ajaxRegion/AjaxRegionTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/ajaxSupport/AjaxSupportTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/fileUpload/FileUploadTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/listShuttle/ListShuttleTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/orderingList/OrderingListTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/pickList/PickListTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxForm/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxRegion/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxSupport/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/fileUpload/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/listShuttle/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/orderingList/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/pickList/locators.properties
Log:
* method openComponent in AbstractSeleniumRichfacesTestCase refactored
* XPath locators rewritten to jQuery
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/AbstractSeleniumRichfacesTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/AbstractSeleniumRichfacesTestCase.java 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/AbstractSeleniumRichfacesTestCase.java 2009-11-06 17:32:08 UTC (rev 15848)
@@ -292,11 +292,12 @@
// wait for new page is opened
selenium.waitForPageToLoad("5000");
- // if component's page is already opened, skin selecting from menu
- if (isComponentPageActive(componentName)) {
- return;
- }
-
+ Wait.until(new Condition() {
+ public boolean isTrue() {
+ return selenium.isElementPresent(LOC_MENU_ITEM);
+ }
+ });
+
// click the menu item
selenium.click(LOC_MENU_ITEM);
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/ajaxForm/AjaxFormTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/ajaxForm/AjaxFormTestCase.java 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/ajaxForm/AjaxFormTestCase.java 2009-11-06 17:32:08 UTC (rev 15848)
@@ -37,9 +37,8 @@
private String LOC_LEGEND_HEADER = getLoc("LEGEND_HEADER");
private String LOC_BUTTON_AJAX = getLoc("BUTTON_AJAX");
private String LOC_BUTTON_NON_AJAX = getLoc("BUTTON_NON_AJAX");
- private String LOC_OUTPUT_TEXT_RELATIVE = getLoc("OUTPUT_TEXT_RELATIVE");
- private String LOC_OUTPUT_AJAX = format(LOC_OUTPUT_TEXT_RELATIVE, LOC_BUTTON_AJAX);
- private String LOC_OUTPUT_NON_AJAX = format(LOC_OUTPUT_TEXT_RELATIVE, LOC_BUTTON_NON_AJAX);
+ private String LOC_OUTPUT_AJAX = getLoc("OUTPUT_AJAX");
+ private String LOC_OUTPUT_NON_AJAX = getLoc("OUTPUT_NON_AJAX");
private final String MSG_OUTPUT_NON_AJAX = getMsg("OUTPUT_NON_AJAX");
private final String MSG_OUTPUT_AJAX = getMsg("OUTPUT_AJAX");
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/ajaxRegion/AjaxRegionTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/ajaxRegion/AjaxRegionTestCase.java 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/ajaxRegion/AjaxRegionTestCase.java 2009-11-06 17:32:08 UTC (rev 15848)
@@ -35,12 +35,11 @@
* @version $Revision$
*/
public class AjaxRegionTestCase extends AbstractSeleniumRichfacesTestCase {
- private final String LOC_INPUT_RELATIVE = getLoc("INPUT_RELATIVE");
- private final String LOC_INPUT_TEST1_NAME1 = format(LOC_INPUT_RELATIVE, 1, 1, 1);
- private final String LOC_INPUT_TEST1_JOB1 = format(LOC_INPUT_RELATIVE, 1, 1, 2);
- private final String LOC_INPUT_TEST1_NAME2 = format(LOC_INPUT_RELATIVE, 1, 2, 1);
- private final String LOC_INPUT_TEST2_NAME1 = format(LOC_INPUT_RELATIVE, 2, 1, 1);
- private final String LOC_INPUT_TEST2_NAME2 = format(LOC_INPUT_RELATIVE, 2, 2, 1);
+ private final String LOC_INPUT_TEST1_NAME1 = getLoc("INPUT_TEST1_NAME1");
+ private final String LOC_INPUT_TEST1_JOB1 = getLoc("INPUT_TEST1_JOB1");
+ private final String LOC_INPUT_TEST1_NAME2 = getLoc("INPUT_TEST1_NAME2");
+ private final String LOC_INPUT_TEST2_NAME1 = getLoc("INPUT_TEST2_NAME1");
+ private final String LOC_INPUT_TEST2_NAME2 = getLoc("INPUT_TEST2_NAME2");
private final String LOC_OUTPUT_VALIDATION_MESSAGE = getLoc("OUTPUT_VALIDATION_MESSAGE");
private final String LOC_OUTPUT_TEST1_TYPED_NAME = getLoc("OUTPUT_TEST1_TYPED_NAME");
private final String LOC_OUTPUT_TEST2_TYPED_NAME = getLoc("OUTPUT_TEST2_TYPED_NAME");
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/ajaxSupport/AjaxSupportTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/ajaxSupport/AjaxSupportTestCase.java 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/ajaxSupport/AjaxSupportTestCase.java 2009-11-06 17:32:08 UTC (rev 15848)
@@ -33,7 +33,7 @@
*/
public class AjaxSupportTestCase extends AbstractSeleniumRichfacesTestCase {
private String LOC_INPUT_TEXT = getLoc("INPUT_TEXT");
- private String LOC_OUTPUT_TEXT_RELATIVE = formatLoc("OUTPUT_TEXT_RELATIVE", LOC_INPUT_TEXT);
+ private String LOC_OUTPUT_TEXT = getLoc("OUTPUT_TEXT");
private String MSG_INPUT_NON_EMPTY = getMsg("INPUT_NON_EMPTY");
@@ -70,7 +70,7 @@
selenium.fireEvent(LOC_INPUT_TEXT, Event.KEYUP);
waitFor(Wait.DEFAULT_INTERVAL);
- waitForTextEquals(LOC_OUTPUT_TEXT_RELATIVE, MSG_INPUT_NON_EMPTY);
+ waitForTextEquals(LOC_OUTPUT_TEXT, MSG_INPUT_NON_EMPTY);
}
public void empty() {
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/fileUpload/FileUploadTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/fileUpload/FileUploadTestCase.java 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/fileUpload/FileUploadTestCase.java 2009-11-06 17:32:08 UTC (rev 15848)
@@ -90,7 +90,7 @@
// locators
private final String LOC_EXAMPLE_HEADER = getLoc("EXAMPLE_HEADER");
- private final String LOC_ADD_BUTTON_N = getLoc("ADD_BUTTON_N");
+ private final String LOC_ADD_BUTTON = getLoc("ADD_BUTTON");
private final String LOC_ADD_BUTTON_CLASS = getLoc("ADD_BUTTON_CLASS");
private final String LOC_UPLOAD_BUTTON = getLoc("UPLOAD_BUTTON");
private final String LOC_UPLOAD_BUTTON_STYLE = getLoc("UPLOAD_BUTTON_STYLE");
@@ -125,7 +125,7 @@
String text = selenium.getText(LOC_UPLOADED_FILES_INFO);
assertEquals(text, "No files currently uploaded", MSG_RIGHT_PANEL_CONTENT);
- int count = selenium.getXpathCount(LOC_NOT_UPLOADED_LIST_TR).intValue();
+ int count = getJQueryCount(LOC_NOT_UPLOADED_LIST_TR);
assertEquals(count, 0, MSG_LEFT_PANEL_NUMBER_OF_ITEMS);
assertTrue(!belongsClass("rich-fileupload-button-dis", LOC_ADD_BUTTON_CLASS), MSG_ADD_BUTTON_ENABLED);
@@ -135,9 +135,9 @@
boolean isPresent = selenium.isElementPresent(LOC_CLEAR_UPLOADED_DATA_BUTTON);
assertFalse(isPresent, MSG_CLEAR_UPLOADED_DATA_BUTTON_NOT_VISIBLE);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 1), "file://" + FILE_YELLOW);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_YELLOW);
- count = selenium.getXpathCount(LOC_NOT_UPLOADED_LIST_TR).intValue();
+ count = getJQueryCount(LOC_NOT_UPLOADED_LIST_TR);
assertEquals(count, 1, MSG_LEFT_PANEL_NUMBER_OF_ITEMS);
assertTrue(!belongsClass("rich-fileupload-button-dis", LOC_ADD_BUTTON_CLASS), MSG_ADD_BUTTON_ENABLED);
@@ -167,50 +167,50 @@
*/
@Test
void testFilesToBeUploadedInfo() {
- int count = selenium.getXpathCount(LOC_NOT_UPLOADED_LIST_TR).intValue();
+ int count = getJQueryCount(LOC_NOT_UPLOADED_LIST_TR);
assertEquals(count, 0, MSG_LEFT_PANEL_NUMBER_OF_ITEMS);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 1), "file://" + FILE_YELLOW);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 2), "file://" + FILE_BLUE);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_YELLOW);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_BLUE);
- count = selenium.getXpathCount(LOC_NOT_UPLOADED_LIST_TR).intValue();
+ count = getJQueryCount(LOC_NOT_UPLOADED_LIST_TR);
assertEquals(count, 2, MSG_LEFT_PANEL_NUMBER_OF_ITEMS);
- String text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_NAME, 1));
+ String text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_NAME, 0));
assertEquals(text, "selenium-test" + Color.YELLOW.getRGB() + ".jpg", format(MSG_LEFT_PANEL_NAME_N, 1));
- text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_NAME, 2));
+ text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_NAME, 1));
assertEquals(text, "selenium-test" + Color.BLUE.getRGB() + ".jpg", format(MSG_LEFT_PANEL_NAME_N, 2));
+ text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_CANCEL, 0));
+ assertEquals(text, "Cancel", format(MSG_LEFT_PANEL_CANCEL_N, 1));
text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_CANCEL, 1));
- assertEquals(text, "Cancel", format(MSG_LEFT_PANEL_CANCEL_N, 1));
- text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_CANCEL, 2));
assertEquals(text, "Cancel", format(MSG_LEFT_PANEL_CANCEL_N, 2));
+ text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_DONE, 0));
+ assertEquals(text, "", format(MSG_LEFT_PANEL_DONE_N, 1));
text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_DONE, 1));
assertEquals(text, "", format(MSG_LEFT_PANEL_DONE_N, 1));
- text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_DONE, 2));
- assertEquals(text, "", format(MSG_LEFT_PANEL_DONE_N, 1));
selenium.click(LOC_UPLOAD_BUTTON);
waitFor(2000);
- count = selenium.getXpathCount(LOC_NOT_UPLOADED_LIST_TR).intValue();
+ count = getJQueryCount(LOC_NOT_UPLOADED_LIST_TR);
assertEquals(count, 2, MSG_LEFT_PANEL_NUMBER_OF_ITEMS);
+ text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_NAME, 0));
+ assertEquals(text, "selenium-test" + Color.YELLOW.getRGB() + ".jpg", format(MSG_LEFT_PANEL_NAME_N, 1));
text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_NAME, 1));
- assertEquals(text, "selenium-test" + Color.YELLOW.getRGB() + ".jpg", format(MSG_LEFT_PANEL_NAME_N, 1));
- text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_NAME, 2));
assertEquals(text, "selenium-test" + Color.BLUE.getRGB() + ".jpg", format(MSG_LEFT_PANEL_NAME_N, 2));
+ text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_CANCEL, 0));
+ assertEquals(text, "Clear", format(MSG_LEFT_PANEL_CANCEL_N, 1));
text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_CANCEL, 1));
assertEquals(text, "Clear", format(MSG_LEFT_PANEL_CANCEL_N, 1));
- text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_CANCEL, 2));
- assertEquals(text, "Clear", format(MSG_LEFT_PANEL_CANCEL_N, 1));
+ text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_DONE, 0));
+ assertEquals(text, "Done", format(MSG_LEFT_PANEL_DONE_N, 1));
text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_DONE, 1));
assertEquals(text, "Done", format(MSG_LEFT_PANEL_DONE_N, 1));
- text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_DONE, 2));
- assertEquals(text, "Done", format(MSG_LEFT_PANEL_DONE_N, 1));
}
/**
@@ -220,29 +220,29 @@
*/
@Test
public void testUploadedFilesInfo() {
- int count = selenium.getXpathCount(LOC_UPLOADED_LIST_TR).intValue();
+ int count = getJQueryCount(LOC_UPLOADED_LIST_TR);
assertEquals(count, 0, MSG_RIGHT_PANEL_NUMBER_OF_ITEMS);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 1), "file://" + FILE_CYAN);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 2), "file://" + FILE_ORANGE);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_CYAN);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_ORANGE);
selenium.click(LOC_UPLOAD_BUTTON);
- count = selenium.getXpathCount(LOC_UPLOADED_LIST_TR).intValue();
+ count = getJQueryCount(LOC_UPLOADED_LIST_TR);
assertEquals(count, 0, MSG_RIGHT_PANEL_NUMBER_OF_ITEMS);
waitForElement(format(LOC_UPLOADED_LIST_N_NAME, 1));
- String text = selenium.getText(format(LOC_UPLOADED_LIST_N_NAME, 1));
+ String text = selenium.getText(format(LOC_UPLOADED_LIST_N_NAME, 0));
assertEquals(text, "selenium-test" + Color.CYAN.getRGB() + ".jpg", format(MSG_RIGHT_PANEL_NAME_N, 1));
- text = selenium.getText(format(LOC_UPLOADED_LIST_N_NAME, 2));
+ text = selenium.getText(format(LOC_UPLOADED_LIST_N_NAME, 1));
assertEquals(text, "selenium-test" + Color.ORANGE.getRGB() + ".jpg", format(MSG_RIGHT_PANEL_NAME_N, 2));
- long size1 = Long.parseLong(selenium.getText(format(LOC_UPLOADED_LIST_N_SIZE, 1)));
+ long size1 = Long.parseLong(selenium.getText(format(LOC_UPLOADED_LIST_N_SIZE, 0)));
long size2 = new File(FILE_CYAN).length();
assertEquals(size1, size2, format(MSG_RIGHT_PANEL_SIZE_N, 1));
- size1 = Long.parseLong(selenium.getText(format(LOC_UPLOADED_LIST_N_SIZE, 2)));
+ size1 = Long.parseLong(selenium.getText(format(LOC_UPLOADED_LIST_N_SIZE, 1)));
size2 = new File(FILE_ORANGE).length();
assertEquals(size1, size2, format(MSG_RIGHT_PANEL_SIZE_N, 1));
@@ -266,13 +266,13 @@
public void testAutomaticUpload() {
selenium.click(LOC_AUTOMATIC_UPLOAD);
- int count = selenium.getXpathCount(LOC_UPLOADED_LIST_TR).intValue();
+ int count = getJQueryCount(LOC_UPLOADED_LIST_TR);
assertEquals(count, 0, MSG_RIGHT_PANEL_NUMBER_OF_ITEMS);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 1), "file://" + FILE_CYAN);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_CYAN);
waitForElement(LOC_UPLOADED_LIST_TR);
- count = selenium.getXpathCount(LOC_UPLOADED_LIST_TR).intValue();
+ count = getJQueryCount(LOC_UPLOADED_LIST_TR);
assertEquals(count, 1, MSG_RIGHT_PANEL_NUMBER_OF_ITEMS);
}
@@ -283,11 +283,11 @@
public void testUploadFiveFiles() {
assertTrue(!belongsClass("rich-fileupload-button-dis", LOC_ADD_BUTTON_CLASS), MSG_ADD_BUTTON_ENABLED);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 1), "file://" + FILE_YELLOW);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 2), "file://" + FILE_BLUE);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 3), "file://" + FILE_CYAN);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 4), "file://" + FILE_ORANGE);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 5), "file://" + FILE_RED);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_YELLOW);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_BLUE);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_CYAN);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_ORANGE);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_RED);
assertFalse(!belongsClass("rich-fileupload-button-dis", LOC_ADD_BUTTON_CLASS), MSG_ADD_BUTTON_NOT_ENABLED);
}
@@ -299,30 +299,30 @@
*/
@Test
public void testUploadBigFile() {
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 1), "file://" + FILE_YELLOW);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 2), "file://" + FILE_BIG);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_YELLOW);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_BIG);
selenium.click(LOC_UPLOAD_BUTTON);
Wait.failWith(MSG_RIGHT_PANEL_NUMBER_OF_ITEMS).until(new Condition() {
public boolean isTrue() {
- return selenium.getXpathCount(LOC_UPLOADED_LIST_TR).intValue() == 1;
+ return getJQueryCount(LOC_UPLOADED_LIST_TR) == 1;
}
});
- String text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_NAME, 1));
+ String text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_NAME, 0));
assertEquals(text, "selenium-test" + Color.YELLOW.getRGB() + ".jpg", format(MSG_LEFT_PANEL_NAME_N, 1));
- text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_NAME, 2));
+ text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_NAME, 1));
assertEquals(text, "selenium-test" + Color.GREEN.getRGB() + ".jpg", format(MSG_LEFT_PANEL_NAME_N, 2));
+ text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_CANCEL, 0));
+ assertEquals(text, "Clear", format(MSG_LEFT_PANEL_CANCEL_N, 1));
text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_CANCEL, 1));
- assertEquals(text, "Clear", format(MSG_LEFT_PANEL_CANCEL_N, 1));
- text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_CANCEL, 2));
assertEquals(text, "Cancel", format(MSG_LEFT_PANEL_CANCEL_N, 2));
+ text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_DONE, 0));
+ assertEquals(text, "Done", format(MSG_LEFT_PANEL_DONE_N, 2));
text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_DONE, 1));
- assertEquals(text, "Done", format(MSG_LEFT_PANEL_DONE_N, 2));
- text = selenium.getText(format(LOC_NOT_UPLOADED_LIST_N_DONE, 2));
assertEquals(text, "File size restricted", format(MSG_LEFT_PANEL_DONE_N, 2));
}
@@ -333,8 +333,8 @@
*/
@Test
public void testClearAllButton() {
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 1), "file://" + FILE_YELLOW);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 2), "file://" + FILE_CYAN);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_YELLOW);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_CYAN);
assertFalse(isDisplayed(LOC_CLEAR_ALL_BUTTON_STYLE), MSG_CLEAR_ALL_BUTTON_NOT_VISIBLE);
@@ -347,7 +347,7 @@
assertFalse(isDisplayed(LOC_CLEAR_ALL_BUTTON_STYLE), MSG_CLEAR_ALL_BUTTON_NOT_VISIBLE);
- int count = selenium.getXpathCount(LOC_NOT_UPLOADED_LIST_TR).intValue();
+ int count = getJQueryCount(LOC_NOT_UPLOADED_LIST_TR);
assertEquals(count, 0, MSG_LEFT_PANEL_NUMBER_OF_ITEMS);
}
@@ -360,8 +360,8 @@
*/
@Test
public void testClearUploadedDataButton() {
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 1), "file://" + FILE_YELLOW);
- selenium.attachFile(format(LOC_ADD_BUTTON_N, 2), "file://" + FILE_CYAN);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_YELLOW);
+ selenium.attachFile(LOC_ADD_BUTTON, "file://" + FILE_CYAN);
assertFalse(selenium.isElementPresent(LOC_CLEAR_UPLOADED_DATA_BUTTON),
MSG_CLEAR_UPLOADED_DATA_BUTTON_NOT_VISIBLE);
@@ -385,10 +385,10 @@
assertFalse(selenium.isElementPresent(LOC_CLEAR_UPLOADED_DATA_BUTTON),
MSG_CLEAR_UPLOADED_DATA_BUTTON_NOT_VISIBLE);
- int count = selenium.getXpathCount(LOC_NOT_UPLOADED_LIST_TR).intValue();
+ int count = getJQueryCount(LOC_NOT_UPLOADED_LIST_TR);
assertEquals(count, 0, MSG_LEFT_PANEL_NUMBER_OF_ITEMS);
- count = selenium.getXpathCount(LOC_UPLOADED_LIST_TR).intValue();
+ count = getJQueryCount(LOC_UPLOADED_LIST_TR);
assertEquals(count, 0, MSG_RIGHT_PANEL_NUMBER_OF_ITEMS);
}
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/listShuttle/ListShuttleTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/listShuttle/ListShuttleTestCase.java 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/listShuttle/ListShuttleTestCase.java 2009-11-06 17:32:08 UTC (rev 15848)
@@ -62,22 +62,20 @@
*/
@Test
public void testCopyButton() {
- int leftCount = selenium.getXpathCount(LOC_LEFT_TABLE_LINES).intValue();
- int rightCount = selenium.getXpathCount(LOC_RIGHT_TABLE_LINES).intValue();
+ int leftCount = getJQueryCount(LOC_LEFT_TABLE_LINES);
+ int rightCount = getJQueryCount(LOC_RIGHT_TABLE_LINES);
selenium.click(LOC_LEFT_TABLE_LINE_1);
assertTrue(isDisplayed(LOC_COPY_BUTTON), "Copy button should be enabled.");
-
selenium.click(LOC_COPY_BUTTON);
-
- int tmpInt = selenium.getXpathCount(LOC_LEFT_TABLE_LINES).intValue();
+ int tmpInt = getJQueryCount(LOC_LEFT_TABLE_LINES);
assertEquals(tmpInt, leftCount - 1, "In left table, one item should be removed.");
- tmpInt = selenium.getXpathCount(LOC_RIGHT_TABLE_LINES).intValue();
+ tmpInt = getJQueryCount(LOC_RIGHT_TABLE_LINES);
assertEquals(tmpInt, rightCount + 1, "In right table, one item should be added.");
// check that it was added also to the toolbar
- tmpInt = selenium.getXpathCount(LOC_TOOLBAR_ITEMS).intValue();
+ tmpInt = getJQueryCount(LOC_TOOLBAR_ITEMS);
assertEquals(tmpInt, rightCount + 1, "Number of items in toolbar.");
}
@@ -98,21 +96,21 @@
*/
@Test
public void testCopyAllButton() {
- int leftCount = selenium.getXpathCount(LOC_LEFT_TABLE_LINES).intValue();
- int rightCount = selenium.getXpathCount(LOC_RIGHT_TABLE_LINES).intValue();
+ int leftCount = getJQueryCount(LOC_LEFT_TABLE_LINES);
+ int rightCount = getJQueryCount(LOC_RIGHT_TABLE_LINES);
assertTrue(isDisplayed(LOC_COPY_ALL_BUTTON), "Copy all button should be enabled.");
selenium.click(LOC_COPY_ALL_BUTTON);
- int count = selenium.getXpathCount(LOC_LEFT_TABLE_LINES).intValue();
+ int count = getJQueryCount(LOC_LEFT_TABLE_LINES);
assertEquals(count, 0, "All items from left table should be removed.");
- count = selenium.getXpathCount(LOC_RIGHT_TABLE_LINES).intValue();
+ count = getJQueryCount(LOC_RIGHT_TABLE_LINES);
assertEquals(count, rightCount + leftCount, "All items should be added to the right table.");
// check that they were added also to the toolbar
- count = selenium.getXpathCount(LOC_TOOLBAR_ITEMS).intValue();
+ count = getJQueryCount(LOC_TOOLBAR_ITEMS);
assertEquals(count, rightCount + leftCount, "Number of items in toolbar.");
}
@@ -124,22 +122,22 @@
*/
@Test
public void testRemoveButton() {
- int leftCount = selenium.getXpathCount(LOC_LEFT_TABLE_LINES).intValue();
- int rightCount = selenium.getXpathCount(LOC_RIGHT_TABLE_LINES).intValue();
+ int leftCount = getJQueryCount(LOC_LEFT_TABLE_LINES);
+ int rightCount = getJQueryCount(LOC_RIGHT_TABLE_LINES);
- selenium.click(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
+ selenium.click(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 0));
assertTrue(isDisplayed(LOC_REMOVE_BUTTON), "Remove button should be enabled.");
selenium.click(LOC_REMOVE_BUTTON);
- int tmpInt = selenium.getXpathCount(LOC_LEFT_TABLE_LINES).intValue();
+ int tmpInt = getJQueryCount(LOC_LEFT_TABLE_LINES);
assertEquals(tmpInt, leftCount + 1, "One item should be added to the left table.");
- tmpInt = selenium.getXpathCount(LOC_RIGHT_TABLE_LINES).intValue();
+ tmpInt = getJQueryCount(LOC_RIGHT_TABLE_LINES);
assertEquals(tmpInt, rightCount - 1, "One item should be removed from the right table.");
// check that one item was removed from toolbar
- tmpInt = selenium.getXpathCount(LOC_TOOLBAR_ITEMS).intValue();
+ tmpInt = getJQueryCount(LOC_TOOLBAR_ITEMS);
assertEquals(tmpInt, rightCount - 1, "Number of items in toolbar.");
}
@@ -160,21 +158,21 @@
*/
@Test
public void testRemoveAllButton() {
- int leftCount = selenium.getXpathCount(LOC_LEFT_TABLE_LINES).intValue();
- int rightCount = selenium.getXpathCount(LOC_RIGHT_TABLE_LINES).intValue();
+ int leftCount = getJQueryCount(LOC_LEFT_TABLE_LINES);
+ int rightCount = getJQueryCount(LOC_RIGHT_TABLE_LINES);
assertTrue(isDisplayed(LOC_REMOVE_ALL_BUTTON), "Remove all button should be enabled.");
selenium.click(LOC_REMOVE_ALL_BUTTON);
- int tmpInt = selenium.getXpathCount(LOC_LEFT_TABLE_LINES).intValue();
+ int tmpInt = getJQueryCount(LOC_LEFT_TABLE_LINES);
assertEquals(tmpInt, leftCount + rightCount, "All items should be added to the left table.");
- tmpInt = selenium.getXpathCount(LOC_RIGHT_TABLE_LINES).intValue();
+ tmpInt = getJQueryCount(LOC_RIGHT_TABLE_LINES);
assertEquals(tmpInt, 0, "All items from right table should be removed.");
// check that everything was removed from toolbar
- tmpInt = selenium.getXpathCount(LOC_TOOLBAR_ITEMS).intValue();
+ tmpInt = getJQueryCount(LOC_TOOLBAR_ITEMS);
assertEquals(tmpInt, 0, "Number of items in toolbar.");
}
@@ -185,28 +183,28 @@
*/
@Test
public void testUpButton() {
- String firstItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
- String firstItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
- String secondItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
- String secondItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 2));
+ String firstItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 0));
+ String firstItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 0));
+ String secondItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
+ String secondItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
assertEquals(secondItemFromToolbar, secondItemFromTable,
"The second item in right table and toolbar should be the same.");
- selenium.click(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
+ selenium.click(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
selenium.click(LOC_UP_BUTTON);
// check items in the table
- String tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
+ String tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 0));
assertEquals(tmpString, secondItemFromTable, "The first and the second item in the table should be swapped.");
- tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
+ tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
assertEquals(tmpString, firstItemFromTable, "The first and the second item in the table should be swapped.");
// check items in the toolbar
- tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
+ tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 0));
assertEquals(tmpString, secondItemFromToolbar,
"The first and the second item in the toolbar should be swapped.");
- tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 2));
+ tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
assertEquals(tmpString, firstItemFromToolbar, "The first and the second item in the toolbar should be swapped.");
}
@@ -227,33 +225,33 @@
*/
@Test
public void testFirstButton() {
- String firstItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
- String firstItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
- String secondItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
- String secondItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 2));
- String thirdItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 3));
- String thirdItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 3));
+ String firstItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 0));
+ String firstItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 0));
+ String secondItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
+ String secondItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
+ String thirdItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
+ String thirdItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 2));
assertEquals(secondItemFromToolbar, secondItemFromTable,
"The second item in right table and toolbar should be the same.");
- selenium.click(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 3));
+ selenium.click(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
selenium.click(LOC_FIRST_BUTTON);
// check items in the table
- String tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
+ String tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
assertEquals(tmpString, firstItemFromTable, "The first item from the table should be now the second.");
- tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 3));
+ tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
assertEquals(tmpString, secondItemFromTable, "The second item from the table should be now the third.");
- tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
+ tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 0));
assertEquals(tmpString, thirdItemFromTable, "The third item from the table should be now the first.");
// check items in the toolbar
- tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 2));
+ tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
assertEquals(tmpString, firstItemFromToolbar, "The first item from the toolbar should be now the second.");
- tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 3));
+ tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 2));
assertEquals(tmpString, secondItemFromToolbar, "The second item from the toolbar should be now the third.");
- tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
+ tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 0));
assertEquals(tmpString, thirdItemFromToolbar, "The third item from the toolbar should be now the first.");
}
@@ -264,28 +262,28 @@
*/
@Test
public void testDownButton() {
- String firstItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
- String firstItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
- String secondItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
- String secondItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 2));
+ String firstItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 0));
+ String firstItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 0));
+ String secondItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
+ String secondItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
assertEquals(secondItemFromToolbar, secondItemFromTable,
"The second item in right table and toolbar should be the same.");
- selenium.click(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
+ selenium.click(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 0));
selenium.click(LOC_DOWN_BUTTON);
// check items in the table
- String tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
+ String tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 0));
assertEquals(tmpString, secondItemFromTable, "The first and the second item in the table should be swapped.");
- tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
+ tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
assertEquals(tmpString, firstItemFromTable, "The first and the second item in the table should be swapped.");
// check items in the toolbar
- tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
+ tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 0));
assertEquals(tmpString, secondItemFromToolbar,
"The first and the second item in the toolbar should be swapped.");
- tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 2));
+ tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
assertEquals(tmpString, firstItemFromToolbar, "The first and the second item in the toolbar should be swapped.");
}
@@ -306,33 +304,33 @@
*/
@Test
public void testLastButton() {
- String firstItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
- String firstItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
- String secondItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
- String secondItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 2));
- String thirdItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 3));
- String thirdItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 3));
+ String firstItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 0));
+ String firstItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 0));
+ String secondItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
+ String secondItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
+ String thirdItemFromTable = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
+ String thirdItemFromToolbar = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 2));
assertEquals(secondItemFromToolbar, secondItemFromTable,
"The second item in right table and toolbar should be the same.");
- selenium.click(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
+ selenium.click(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 0));
selenium.click(LOC_LAST_BUTTON);
// check items in the table
- String tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 3));
+ String tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
assertEquals(tmpString, firstItemFromTable, "The first item from the table should be now last.");
- tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
+ tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 0));
assertEquals(tmpString, secondItemFromTable, "The second item from the table should be now the first.");
- tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 2));
+ tmpString = selenium.getText(format(LOC_RIGHT_TABLE_LINE_PREFORMATTED, 1));
assertEquals(tmpString, thirdItemFromTable, "The third item from the table should be now the second.");
// check items in the toolbar
- tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 3));
+ tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 2));
assertEquals(tmpString, firstItemFromToolbar, "The first item from the toolbar should be now last.");
- tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
+ tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 0));
assertEquals(tmpString, secondItemFromToolbar, "The second item from the toolbar should be now the first.");
- tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 2));
+ tmpString = selenium.getText(format(LOC_TOOLBAR_ITEM_PREFORMATTED, 1));
assertEquals(tmpString, thirdItemFromToolbar, "The third item from the toolbar should be now the second.");
}
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/orderingList/OrderingListTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/orderingList/OrderingListTestCase.java 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/orderingList/OrderingListTestCase.java 2009-11-06 17:32:08 UTC (rev 15848)
@@ -62,7 +62,7 @@
*/
@Test
public void testOrderingList() {
- int count = selenium.getXpathCount(LOC_TABLE_LINES).intValue();
+ int count = getJQueryCount(LOC_TABLE_LINES);
assertTrue(count > 0, "There are no lines in the table.");
waitFor(1000);
@@ -75,8 +75,8 @@
*/
@Test
public void testClickSingleSong() {
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- String text = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ String text = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
waitFor(1000);
String text2 = selenium.getText(LOC_SELECTION);
@@ -93,21 +93,21 @@
String[] fromPanel = new String[3];
// click lines nr. 1, 3, and 5 in the table
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 1));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 0));
selenium.controlKeyDown();
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 3));
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 2));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 4));
selenium.controlKeyUp();
- fromTable[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- fromTable[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 3));
- fromTable[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ fromTable[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ fromTable[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
+ fromTable[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 4));
waitFor(1000);
// get all selections from the panel on the right
for (int i = 0; i < 3; i++) {
- fromPanel[i] = selenium.getText(format(LOC_SELECTION_PREFORMATTED, i + 1));
+ fromPanel[i] = selenium.getText(format(LOC_SELECTION_PREFORMATTED, i+1));
}
assertEqualsNoOrder(fromPanel, fromTable, "Items chosen in table should be also in the right panel.");
@@ -122,20 +122,20 @@
String[] fromPanel = new String[3];
// click lines nr. 1 and 3 in the table
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 1));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 0));
selenium.shiftKeyDown();
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 3));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 2));
selenium.shiftKeyUp();
- fromTable[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- fromTable[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
- fromTable[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 3));
+ fromTable[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ fromTable[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
+ fromTable[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
waitFor(1000);
// get all selections from the panel on the right
for (int i = 0; i < 3; i++) {
- fromPanel[i] = selenium.getText(format(LOC_SELECTION_PREFORMATTED, i + 1));
+ fromPanel[i] = selenium.getText(format(LOC_SELECTION_PREFORMATTED, i+1));
}
assertEqualsNoOrder(fromPanel, fromTable, "Items chosen in table should be also in the right panel.");
@@ -149,16 +149,16 @@
String[] before = new String[2];
String[] after = new String[2];
- before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
- before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
+ before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 4));
+ before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
// click line nr. 6 in the table
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 6));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 5));
// click the 'Up' button
selenium.click(LOC_BUTTON_UP);
- after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
- after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
+ after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 4));
+ after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
assertEquals(after[0], before[1], "The sixth line should be now fifth.");
assertEquals(after[1], before[0], "The fifth line should be now sixth.");
@@ -172,22 +172,22 @@
String[] before = new String[3];
String[] after = new String[3];
- before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
- before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 7));
+ before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 4));
+ before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
// click line nr. 6 and 7 in the table
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ selenium.shiftKeyDown();
selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- selenium.shiftKeyDown();
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 7));
selenium.shiftKeyUp();
// click the 'Up' button (5,6,7 -> 6,7,5)
selenium.click(LOC_BUTTON_UP);
- after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
- after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 7));
+ after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 4));
+ after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
assertEquals(after[0], before[1], "The sixth line should be now fifth.");
assertEquals(after[1], before[2], "The seventh line should be now sixth.");
@@ -202,22 +202,22 @@
String[] before = new String[3];
String[] after = new String[3];
- before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
- before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 7));
+ before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 4));
+ before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
// click line nr. 6 and 7 in the table
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ selenium.controlKeyDown();
selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- selenium.controlKeyDown();
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 7));
selenium.controlKeyUp();
// click the 'Up' button (5,6,7 -> 6,7,5)
selenium.click(LOC_BUTTON_UP);
- after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
- after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 7));
+ after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 4));
+ after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
assertEquals(after[0], before[1], "The sixth line should be now fifth.");
assertEquals(after[1], before[2], "The seventh line should be now sixth.");
@@ -232,16 +232,16 @@
String[] before = new String[2];
String[] after = new String[2];
- before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 7));
+ before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
// click line nr. 6 in the table
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 6));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 5));
// click the 'Down' button
selenium.click(LOC_BUTTON_DOWN);
- after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 7));
+ after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
assertEquals(after[0], before[1], "The sixth line should be now seventh.");
assertEquals(after[1], before[0], "The seventh line should be now sixth.");
@@ -255,22 +255,22 @@
String[] before = new String[3];
String[] after = new String[3];
- before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
- before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 7));
+ before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 4));
+ before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
// click line nr. 5 and 6 in the table
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 4));
+ selenium.shiftKeyDown();
selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 5));
- selenium.shiftKeyDown();
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 6));
selenium.shiftKeyUp();
// click the 'Down' button (5,6,7 -> 7,5,6)
selenium.click(LOC_BUTTON_DOWN);
- after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
- after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 7));
+ after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 4));
+ after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
assertEquals(after[0], before[2], "The seventh line should be now fifth.");
assertEquals(after[1], before[0], "The fifth line should be now sixth.");
@@ -285,26 +285,26 @@
String[] before = new String[3];
String[] after = new String[3];
- before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
- before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 7));
+ before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 4));
+ before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
// click line nr. 5 and 6 in the table
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 4));
+ selenium.controlKeyDown();
selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 5));
- selenium.controlKeyDown();
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 6));
selenium.controlKeyUp();
// click the 'Down' button (5,6,7 -> 7,5,6)
selenium.click(LOC_BUTTON_DOWN);
- after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
- after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 7));
+ after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 4));
+ after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 5));
+ after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 6));
- assertEquals(after[0], before[2], "The seventh line should be now fifth.");
- assertEquals(after[1], before[0], "The fifth line should be now sixth.");
- assertEquals(after[2], before[1], "The sixth line should be now seventh.");
+ assertEquals(after[0], before[2], "The seventh line should be now sixth.");
+ assertEquals(after[1], before[0], "The fifth line should be now seventh.");
+ assertEquals(after[2], before[1], "The sixth line should be now fifth.");
}
/**
@@ -314,20 +314,20 @@
public void testLastSingleSong() {
String[] before = new String[3];
String[] after = new String[3];
- int countOfLines = selenium.getXpathCount(LOC_TABLE_LINES).intValue();
+ int countOfLines = getJQueryCount(LOC_TABLE_LINES);
- before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
- before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
+ before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
// click line nr. 1 in the table
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 1));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 0));
// click the 'Last' button (1,2,..,last-1,last --> 2,..,last,1)
selenium.click(LOC_BUTTON_LAST);
- after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines - 1));
- after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-2));
+ after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
assertEquals(after[0], before[1], "The second line should be now first.");
assertEquals(after[1], before[2], "The last line should be now last but one.");
@@ -341,26 +341,26 @@
public void testLastMultipleSongsShift() {
String[] before = new String[4];
String[] after = new String[4];
- int countOfLines = selenium.getXpathCount(LOC_TABLE_LINES).intValue();
+ int countOfLines = getJQueryCount(LOC_TABLE_LINES);
- before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
- before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 3));
- before[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
+ before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
+ before[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
// click line nr. 1 and 2 in the table
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ selenium.shiftKeyDown();
selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- selenium.shiftKeyDown();
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 2));
selenium.shiftKeyUp();
// click the 'Last' button (1,2,3,..,last --> 3,..,last,1,2)
selenium.click(LOC_BUTTON_LAST);
- after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines - 2));
- after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines - 1));
- after[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-3));
+ after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-2));
+ after[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
assertEquals(after[0], before[2], "The third line should be now first.");
assertEquals(after[1], before[3], "The last line should be now last but two.");
@@ -375,26 +375,26 @@
public void testLastMultipleSongsCtrl() {
String[] before = new String[4];
String[] after = new String[4];
- int countOfLines = selenium.getXpathCount(LOC_TABLE_LINES).intValue();
+ int countOfLines = getJQueryCount(LOC_TABLE_LINES);
- before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
- before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 3));
- before[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
+ before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
+ before[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
// click line nr. 1 and 2 in the table
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ selenium.controlKeyDown();
selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- selenium.controlKeyDown();
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, 2));
selenium.controlKeyUp();
// click the 'Last' button (1,2,3,..,last --> 3,..,last,1,2)
selenium.click(LOC_BUTTON_LAST);
- after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines - 2));
- after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines - 1));
- after[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-3));
+ after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-2));
+ after[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
assertEquals(after[0], before[2], "The third line should be now first.");
assertEquals(after[1], before[3], "The last line should be now last but two.");
@@ -409,20 +409,20 @@
public void testFirstSingleSong() {
String[] before = new String[3];
String[] after = new String[3];
- int countOfLines = selenium.getXpathCount(LOC_TABLE_LINES).intValue();
+ int countOfLines = getJQueryCount(LOC_TABLE_LINES);
- before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines - 1));
- before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-2));
+ before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
// click the last line in the table
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
// click the 'First' button (1...last-1,last --> last,1...last-1)
selenium.click(LOC_BUTTON_FIRST);
- after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
- after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
+ after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
assertEquals(after[0], before[2], "The second line should be now first.");
assertEquals(after[1], before[0], "The first line should be now second.");
@@ -436,27 +436,27 @@
public void testFirstMultipleSongsShift() {
String[] before = new String[4];
String[] after = new String[4];
- int countOfLines = selenium.getXpathCount(LOC_TABLE_LINES).intValue();
+ int countOfLines = getJQueryCount(LOC_TABLE_LINES);
- before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines - 2));
- before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines - 1));
- before[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-3));
+ before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-2));
+ before[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
// click last 2 lines in the table
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines - 1));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-2));
selenium.shiftKeyDown();
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
selenium.shiftKeyUp();
// click the 'First' button (1...last-2,last-1,last -->
// last-1,last,1...last-2)
selenium.click(LOC_BUTTON_FIRST);
- after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
- after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 3));
- after[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
+ after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
+ after[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
assertEquals(after[0], before[2], "The last but one line should be now first.");
assertEquals(after[1], before[3], "The last line should be now second.");
@@ -471,27 +471,27 @@
public void testFirstMultipleSongsCtrl() {
String[] before = new String[4];
String[] after = new String[4];
- int countOfLines = selenium.getXpathCount(LOC_TABLE_LINES).intValue();
+ int countOfLines = getJQueryCount(LOC_TABLE_LINES);
- before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines - 2));
- before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines - 1));
- before[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ before[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ before[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-3));
+ before[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-2));
+ before[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
// click last 2 lines in the table
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines - 1));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-2));
selenium.controlKeyDown();
- selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ selenium.click(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
selenium.controlKeyUp();
// click the 'First' button (1...last-2,last-1,last -->
// last-1,last,1...last-2)
selenium.click(LOC_BUTTON_FIRST);
- after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
- after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
- after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 3));
- after[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines));
+ after[0] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 0));
+ after[1] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 1));
+ after[2] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, 2));
+ after[3] = selenium.getText(format(LOC_TABLE_LINE_PREFORMATTED, countOfLines-1));
assertEquals(after[0], before[2], "The last but one line should be now first.");
assertEquals(after[1], before[3], "The last line should be now second.");
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/pickList/PickListTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/pickList/PickListTestCase.java 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/pickList/PickListTestCase.java 2009-11-06 17:32:08 UTC (rev 15848)
@@ -75,10 +75,10 @@
public void testFirstPickList() {
scrollIntoView(LOC_FIRST_EXAMPLE_HEADER, true);
- int count = selenium.getXpathCount(LOC_FIRST_LEFT_ITEMS).intValue();
+ int count = getJQueryCount(LOC_FIRST_LEFT_ITEMS);
assertTrue(count > 0, "There are no lines in the upper left table.");
- count = selenium.getXpathCount(LOC_FIRST_RIGHT_ITEMS).intValue();
+ count = getJQueryCount(LOC_FIRST_RIGHT_ITEMS);
assertEquals(count, 0, "There should be no lines in the upper right table.");
}
@@ -89,14 +89,14 @@
public void testFirstCopySingleItem() {
scrollIntoView(LOC_FIRST_EXAMPLE_HEADER, true);
- final int count = selenium.getXpathCount(LOC_FIRST_LEFT_ITEMS).intValue();
+ final int count = getJQueryCount(LOC_FIRST_LEFT_ITEMS);
selenium.click(LOC_FIRST_LEFT_FIRST_ITEM);
selenium.click(LOC_FIRST_BUTTON_COPY);
Wait.failWith("There should be less lines in the left table.").until(new Condition() {
public boolean isTrue() {
- return selenium.getXpathCount(LOC_FIRST_LEFT_ITEMS).intValue() == count -1;
+ return getJQueryCount(LOC_FIRST_LEFT_ITEMS) == count -1;
}
});
}
@@ -118,17 +118,17 @@
public void testFirstCopyAll() {
scrollIntoView(LOC_FIRST_EXAMPLE_HEADER, true);
- final int count = selenium.getXpathCount(LOC_FIRST_LEFT_ITEMS).intValue();
+ final int count = getJQueryCount(LOC_FIRST_LEFT_ITEMS);
selenium.click(LOC_FIRST_BUTTON_COPY_ALL);
Wait.failWith("All items from left table should be now in the right table.").until(new Condition() {
public boolean isTrue() {
- return selenium.getXpathCount(LOC_FIRST_RIGHT_ITEMS).intValue() == count;
+ return getJQueryCount(LOC_FIRST_RIGHT_ITEMS) == count;
}
});
- int newCount = selenium.getXpathCount(LOC_FIRST_LEFT_ITEMS).intValue();
+ int newCount = getJQueryCount(LOC_FIRST_LEFT_ITEMS);
assertEquals(newCount, 0, "There should be no lines in the left table.");
}
@@ -141,14 +141,14 @@
selenium.click(LOC_FIRST_BUTTON_COPY_ALL);
- final int count = selenium.getXpathCount(LOC_FIRST_RIGHT_ITEMS).intValue();
+ final int count = getJQueryCount(LOC_FIRST_RIGHT_ITEMS);
selenium.click(LOC_FIRST_RIGHT_FIRST_ITEM);
selenium.click(LOC_FIRST_BUTTON_REMOVE);
Wait.failWith("There should be less lines in the right table.").until(new Condition() {
public boolean isTrue() {
- return selenium.getXpathCount(LOC_FIRST_RIGHT_ITEMS).intValue() == count - 1;
+ return getJQueryCount(LOC_FIRST_RIGHT_ITEMS) == count - 1;
}
});
}
@@ -170,18 +170,18 @@
public void testFirstRemoveAll() {
scrollIntoView(LOC_FIRST_EXAMPLE_HEADER, true);
- final int count = selenium.getXpathCount(LOC_FIRST_LEFT_ITEMS).intValue();
+ final int count = getJQueryCount(LOC_FIRST_LEFT_ITEMS);
selenium.click(LOC_FIRST_BUTTON_COPY_ALL);
selenium.click(LOC_FIRST_BUTTON_REMOVE_ALL);
Wait.failWith("There should be no lines in the right table.").until(new Condition() {
public boolean isTrue() {
- return selenium.getXpathCount(LOC_FIRST_RIGHT_ITEMS).intValue() == 0;
+ return getJQueryCount(LOC_FIRST_RIGHT_ITEMS) == 0;
}
});
- int newCount = selenium.getXpathCount(LOC_FIRST_LEFT_ITEMS).intValue();
+ int newCount = getJQueryCount(LOC_FIRST_LEFT_ITEMS);
assertEquals(newCount, count, "All items from right table should be now in the left table.");
}
@@ -192,10 +192,10 @@
public void testSecondPickList() {
scrollIntoView(LOC_SECOND_EXAMPLE_HEADER, true);
- int count = selenium.getXpathCount(LOC_SECOND_LEFT_ITEMS).intValue();
+ int count = getJQueryCount(LOC_SECOND_LEFT_ITEMS);
assertTrue(count > 0, "There are no lines in the lower left table.");
- count = selenium.getXpathCount(LOC_SECOND_RIGHT_ITEMS).intValue();
+ count = getJQueryCount(LOC_SECOND_RIGHT_ITEMS);
assertEquals(count, 0, "There should be no lines in the lower right table.");
boolean empty = !selenium.isElementPresent(LOC_SECOND_CHOSEN_OPTIONS_UL);
@@ -209,18 +209,18 @@
public void testSecondCopySingleItem() {
scrollIntoView(LOC_SECOND_EXAMPLE_HEADER, true);
- int count = selenium.getXpathCount(LOC_SECOND_LEFT_ITEMS).intValue();
+ int count = getJQueryCount(LOC_SECOND_LEFT_ITEMS);
selenium.click(LOC_SECOND_LEFT_FIRST_ITEM);
selenium.click(LOC_SECOND_BUTTON_COPY);
Wait.failWith("There should be only one capital city.").until(new Condition() {
public boolean isTrue() {
- return selenium.getXpathCount(LOC_SECOND_CHOSEN_OPTIONS_LI).intValue() == 1;
+ return getJQueryCount(LOC_SECOND_CHOSEN_OPTIONS_LI) == 1;
}
});
- int newCount = selenium.getXpathCount(LOC_SECOND_LEFT_ITEMS).intValue();
+ int newCount = getJQueryCount(LOC_SECOND_LEFT_ITEMS);
assertEquals(newCount, count - 1, "There should be less lines in the left table.");
String capital = selenium.getText(LOC_SECOND_CHOSEN_OPTIONS_LI1);
@@ -244,23 +244,23 @@
public void testSecondCopyAll() {
scrollIntoView(LOC_SECOND_EXAMPLE_HEADER, true);
- final int count = selenium.getXpathCount(LOC_SECOND_LEFT_ITEMS).intValue();
+ final int count = getJQueryCount(LOC_SECOND_LEFT_ITEMS);
selenium.click(LOC_SECOND_BUTTON_COPY_ALL);
Wait.failWith("Not all capital cities were displayed in the panel.").until(new Condition() {
public boolean isTrue() {
- return selenium.getXpathCount(LOC_SECOND_CHOSEN_OPTIONS_LI).intValue() == count;
+ return getJQueryCount(LOC_SECOND_CHOSEN_OPTIONS_LI) == count;
}
});
- int newCount = selenium.getXpathCount(LOC_SECOND_LEFT_ITEMS).intValue();
+ int newCount = getJQueryCount(LOC_SECOND_LEFT_ITEMS);
assertEquals(newCount, 0, "There should be no lines in the left table.");
- newCount = selenium.getXpathCount(LOC_SECOND_RIGHT_ITEMS).intValue();
+ newCount = getJQueryCount(LOC_SECOND_RIGHT_ITEMS);
assertEquals(newCount, count, "All items from left table should be now in the right table.");
- newCount = selenium.getXpathCount(LOC_SECOND_CHOSEN_OPTIONS_LI).intValue();
+ newCount = getJQueryCount(LOC_SECOND_CHOSEN_OPTIONS_LI);
assertEquals(newCount, count, "Not all capital cities were displayed in the panel.");
}
@@ -273,21 +273,21 @@
selenium.click(LOC_SECOND_BUTTON_COPY_ALL);
- final int count = selenium.getXpathCount(LOC_SECOND_RIGHT_ITEMS).intValue();
+ final int count = getJQueryCount(LOC_SECOND_RIGHT_ITEMS);
selenium.click(LOC_SECOND_RIGHT_FIRST_ITEM);
selenium.click(LOC_SECOND_BUTTON_REMOVE);
Wait.failWith("The capital city was not removed from panel.").until(new Condition() {
public boolean isTrue() {
- return selenium.getXpathCount(LOC_SECOND_CHOSEN_OPTIONS_LI).intValue() == count - 1;
+ return getJQueryCount(LOC_SECOND_CHOSEN_OPTIONS_LI) == count - 1;
}
});
- int newCount = selenium.getXpathCount(LOC_SECOND_RIGHT_ITEMS).intValue();
+ int newCount = getJQueryCount(LOC_SECOND_RIGHT_ITEMS);
assertEquals(newCount, count - 1, "There should be less lines in the right table.");
- newCount = selenium.getXpathCount(LOC_SECOND_CHOSEN_OPTIONS_LI).intValue();
+ newCount = getJQueryCount(LOC_SECOND_CHOSEN_OPTIONS_LI);
assertEquals(newCount, count - 1, "The capital city was not removed from panel.");
}
@@ -308,21 +308,21 @@
public void testSecondRemoveAll() {
scrollIntoView(LOC_SECOND_EXAMPLE_HEADER, true);
- int count = selenium.getXpathCount(LOC_SECOND_LEFT_ITEMS).intValue();
+ int count = getJQueryCount(LOC_SECOND_LEFT_ITEMS);
selenium.click(LOC_SECOND_BUTTON_COPY_ALL);
selenium.click(LOC_SECOND_BUTTON_REMOVE_ALL);
Wait.failWith("All capitals from the panel should be removed.").until(new Condition() {
public boolean isTrue() {
- return selenium.getXpathCount(LOC_SECOND_CHOSEN_OPTIONS_LI).intValue() == 0;
+ return getJQueryCount(LOC_SECOND_CHOSEN_OPTIONS_LI) == 0;
}
});
- int newCount = selenium.getXpathCount(LOC_SECOND_RIGHT_ITEMS).intValue();
+ int newCount = getJQueryCount(LOC_SECOND_RIGHT_ITEMS);
assertEquals(newCount, 0, "There should be no lines in the right table.");
- newCount = selenium.getXpathCount(LOC_SECOND_LEFT_ITEMS).intValue();
+ newCount = getJQueryCount(LOC_SECOND_LEFT_ITEMS);
assertEquals(newCount, count, "All items from right table should be now in the left table.");
}
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxForm/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxForm/locators.properties 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxForm/locators.properties 2009-11-06 17:32:08 UTC (rev 15848)
@@ -1,4 +1,5 @@
-LEGEND_HEADER=//legend[text()\='AjaxForm Demo']
-BUTTON_AJAX=//input[@type\='submit' and @value\="Set Local Name to John (Ajax)"]
-BUTTON_NON_AJAX=//input[@type\='submit' and @value\="Set Both Name to Mark (non-Ajax)"]
-OUTPUT_TEXT_RELATIVE={0}/../../../tr[2]/*/*/text()
\ No newline at end of file
+LEGEND_HEADER=jquery=fieldset:eq(1) > legend
+BUTTON_AJAX=jquery=input[value=Set Local Name to John (Ajax)]
+BUTTON_NON_AJAX=jquery=input[value=Set Both Name to Mark (non-Ajax)]
+OUTPUT_AJAX=jquery=fieldset:eq(1) div.rich-panel:eq(0) span
+OUTPUT_NON_AJAX=jquery=fieldset:eq(1) div.rich-panel:eq(1) span
\ No newline at end of file
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxRegion/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxRegion/locators.properties 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxRegion/locators.properties 2009-11-06 17:32:08 UTC (rev 15848)
@@ -1,5 +1,10 @@
-INPUT_RELATIVE=//fieldset[{0}]//table//td[{1}]//table//tr[{2}]//input[@type\='text']
-OUTPUT_VALIDATION_MESSAGE=//fieldset[1]/div[1]/*[2]/ul/li
-OUTPUT_TEST1_TYPED_NAME=//span[@id\='outname']
-OUTPUT_TEST2_TYPED_NAME=//span[@id\='outname2']
-OUTPUT_TEST2_INFLUENCED_TEXT_PREFORMATTED=//span[@id\='out{0}']
+INPUT_TEST1_NAME1=jquery=fieldset:eq(0) form#form1 td input:eq(0)
+INPUT_TEST1_JOB1=jquery=fieldset:eq(0) form#form1 td input:eq(1)
+INPUT_TEST1_NAME2=jquery=fieldset:eq(0) form#form2 td input:eq(0)
+INPUT_TEST2_NAME1=jquery=fieldset:eq(1) form:eq(0) td input
+INPUT_TEST2_NAME2=jquery=fieldset:eq(1) form:eq(1) td input
+
+OUTPUT_VALIDATION_MESSAGE=jquery=fieldset:eq(0) li
+OUTPUT_TEST1_TYPED_NAME=jquery=span#outname
+OUTPUT_TEST2_TYPED_NAME=jquery=span#outname2
+OUTPUT_TEST2_INFLUENCED_TEXT_PREFORMATTED=jquery=span#out{0}
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxSupport/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxSupport/locators.properties 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxSupport/locators.properties 2009-11-06 17:32:08 UTC (rev 15848)
@@ -1,2 +1,2 @@
-INPUT_TEXT=//input[@type\='text']
-OUTPUT_TEXT_RELATIVE={0}/../../td[2]/*/text()
\ No newline at end of file
+INPUT_TEXT=jquery=input[id=myform:myinput]
+OUTPUT_TEXT=jquery=span[id=myform:outtext]
\ No newline at end of file
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/fileUpload/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/fileUpload/locators.properties 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/fileUpload/locators.properties 2009-11-06 17:32:08 UTC (rev 15848)
@@ -1,22 +1,22 @@
-EXAMPLE_HEADER=//fieldset[1]/legend
-ADD_BUTTON_N=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/table/tbody/tr/td/div[1]/div/div[2]/input[{0}]
-ADD_BUTTON_CLASS=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/table/tbody/tr/td/div[1]/div
-UPLOAD_BUTTON_STYLE=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/table/tbody/tr/td/div[2]
-UPLOAD_BUTTON=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/table/tbody/tr/td/div[2]/div
-CLEAR_ALL_BUTTON=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/table/tbody/tr/td/div[3]/div
-CLEAR_ALL_BUTTON_STYLE=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/table/tbody/tr/td/div[3]
-CLEAR_UPLOADED_DATA_BUTTON=//fieldset[1]/div/form/table/tbody/tr/td[2]/span/input
+EXAMPLE_HEADER=jquery=fieldset:eq(0) > legend
+ADD_BUTTON=jquery=fieldset:eq(0) input[type=file]:last
+ADD_BUTTON_CLASS=jquery=fieldset:eq(0) table.rich-fileupload-toolbar-decor td > div:eq(0) > div
+UPLOAD_BUTTON_STYLE=jquery=fieldset:eq(0) table.rich-fileupload-toolbar-decor td > div:eq(1)
+UPLOAD_BUTTON=jquery=fieldset:eq(0) table.rich-fileupload-toolbar-decor td > div:eq(1) > div
+CLEAR_ALL_BUTTON=jquery=fieldset:eq(0) table.rich-fileupload-toolbar-decor td > div:eq(2) > div
+CLEAR_ALL_BUTTON_STYLE=jquery=fieldset:eq(0) table.rich-fileupload-toolbar-decor td > div:eq(2)
+CLEAR_UPLOADED_DATA_BUTTON=jquery=fieldset:eq(0) input[value=Clear Uploaded Data]
-NOT_UPLOADED_LIST_TR=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/div/table/tbody/tr
-NOT_UPLOADED_LIST_N_NAME=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/div/table[{0}]/tbody/tr/td[1]/div[1]
-NOT_UPLOADED_LIST_N_DONE=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/div/table[{0}]/tbody/tr/td[1]/div[3]
-NOT_UPLOADED_LIST_N_CANCEL=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/div/table[{0}]/tbody/tr/td[2]/div/a
+NOT_UPLOADED_LIST_TR=jquery=fieldset:eq(0) td.top:eq(0) div.rich-fileupload-list-overflow tr
+NOT_UPLOADED_LIST_N_NAME=jquery=fieldset:eq(0) td.top:eq(0) div.rich-fileupload-list-overflow tr:eq({0}) > td:eq(0) > div:eq(0)
+NOT_UPLOADED_LIST_N_DONE=jquery=fieldset:eq(0) td.top:eq(0) div.rich-fileupload-list-overflow tr:eq({0}) > td:eq(0) > div:eq(2)
+NOT_UPLOADED_LIST_N_CANCEL=jquery=fieldset:eq(0) td.top:eq(0) div.rich-fileupload-list-overflow tr:eq({0}) > td:eq(1) > div > a
-UPLOADED_FILES_INFO=//fieldset[1]/div/form/table/tbody/tr/td[2]/span/div/div[2]
-UPLOADED_LIST_TR=//fieldset[1]/div/form/table/tbody/tr/td[2]/span/div/div[2]/table/tbody/tr
-UPLOADED_LIST_N_IMG=//fieldset[1]/div/form/table/tbody/tr/td[2]/span/div/div[2]/table/tbody/tr[{0}]/td/div/div/table/tbody/tr/td[1]/img
-UPLOADED_LIST_N_NAME=//fieldset[1]/div/form/table/tbody/tr/td[2]/span/div/div[2]/table/tbody/tr[{0}]/td/div/div/table/tbody/tr/td[2]/table/tbody/tr[1]/td[2]
-UPLOADED_LIST_N_SIZE=//fieldset[1]/div/form/table/tbody/tr/td[2]/span/div/div[2]/table/tbody/tr[{0}]/td/div/div/table/tbody/tr/td[2]/table/tbody/tr[2]/td[2]
+UPLOADED_FILES_INFO=jquery=fieldset:eq(0) td.top:eq(1) > span > div > div:eq(1)
+UPLOADED_LIST_TR=jquery=fieldset:eq(0) td.top:eq(1) table:eq(0) > tbody > tr
+UPLOADED_LIST_N_IMG=jquery=fieldset:eq(0) td.top:eq(1) td[class*=rich-table-cell]:eq({0}) img
+UPLOADED_LIST_N_NAME=jquery=fieldset:eq(0) td.top:eq(1) td[class*=rich-table-cell]:eq({0}) td:eq(1) tr:eq(0) > td:eq(1)
+UPLOADED_LIST_N_SIZE=jquery=fieldset:eq(0) td.top:eq(1) td[class*=rich-table-cell]:eq({0}) td:eq(1) tr:eq(1) > td:eq(1)
-AUTOMATIC_UPLOAD=//fieldset[2]/form/table/tbody/tr/td[1]/input
-FLASH=//fieldset[2]/form/table/tbody/tr/td[2]/input
\ No newline at end of file
+AUTOMATIC_UPLOAD=jquery=fieldset:eq(1) table input:eq(0)
+FLASH=jquery=fieldset:eq(1) table input:eq(0)
\ No newline at end of file
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/listShuttle/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/listShuttle/locators.properties 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/listShuttle/locators.properties 2009-11-06 17:32:08 UTC (rev 15848)
@@ -1,16 +1,16 @@
-EXAMPLE_HEADER=//fieldset/legend
-LEFT_TABLE_LINES=//fieldset/div/form/table[2]/tbody/tr[2]/td[1]/div/table/tbody/tr/td/div/div/table/tbody/tr
-RIGHT_TABLE_LINES=//fieldset/div/form/table[2]/tbody/tr[2]/td[3]/div/table/tbody/tr/td/div/div/table/tbody/tr
-LEFT_TABLE_LINE_1=//fieldset/div/form/table[2]/tbody/tr[2]/td[1]/div/table/tbody/tr/td/div/div/table/tbody/tr[1]
-RIGHT_TABLE_LINE_PREFORMATTED=//fieldset/div/form/table[2]/tbody/tr[2]/td[3]/div/table/tbody/tr/td/div/div/table/tbody/tr[{0}]
-TOOLBAR_ITEMS=//fieldset/div/form/table[1]/tbody/tr[1]/td[contains(@class,'rich-toolbar-item')]
-TOOLBAR_ITEM_PREFORMATTED=//fieldset/div/form/table[1]/tbody/tr/td[{0}*2-1]
+EXAMPLE_HEADER=jquery=fieldset > legend
+LEFT_TABLE_LINES=jquery=div.rich-shuttle-source-items table.rich-shuttle-internal-tab tr
+RIGHT_TABLE_LINES=jquery=div.rich-shuttle-target-items table.rich-shuttle-internal-tab tr
+LEFT_TABLE_LINE_1=jquery=div.rich-shuttle-source-items table.rich-shuttle-internal-tab tr:eq(0)
+RIGHT_TABLE_LINE_PREFORMATTED=jquery=div.rich-shuttle-target-items table.rich-shuttle-internal-tab tr:eq({0})
+TOOLBAR_ITEMS=jquery=table.rich-toolbar td[class*=rich-toolbar-item]
+TOOLBAR_ITEM_PREFORMATTED=jquery=table.rich-toolbar td[class*=rich-toolbar-item]:eq({0})
-COPY_ALL_BUTTON=//fieldset/div/form/table[2]/tbody/tr[2]/td[2]/div/div[1]
-COPY_BUTTON=//fieldset/div/form/table[2]/tbody/tr[2]/td[2]/div/div[3]
-REMOVE_BUTTON=//fieldset/div/form/table[2]/tbody/tr[2]/td[2]/div/div[5]
-REMOVE_ALL_BUTTON=//fieldset/div/form/table[2]/tbody/tr[2]/td[2]/div/div[7]
-FIRST_BUTTON=//fieldset/div/form/table[2]/tbody/tr[2]/td[4]/div/div[1]
-UP_BUTTON=//fieldset/div/form/table[2]/tbody/tr[2]/td[4]/div/div[3]
-DOWN_BUTTON=//fieldset/div/form/table[2]/tbody/tr[2]/td[4]/div/div[5]
-LAST_BUTTON=//fieldset/div/form/table[2]/tbody/tr[2]/td[4]/div/div[7]
+COPY_ALL_BUTTON=jquery=div.rich-shuttle-controls:eq(0) div.rich-shuttle-control-copyall
+COPY_BUTTON=jquery=div.rich-shuttle-controls:eq(0) div.rich-shuttle-control-copy
+REMOVE_BUTTON=jquery=div.rich-shuttle-controls:eq(0) div.rich-shuttle-control-remove
+REMOVE_ALL_BUTTON=jquery=div.rich-shuttle-controls:eq(0) div.rich-shuttle-control-removeall
+FIRST_BUTTON=jquery=div.rich-shuttle-controls:eq(1) div.rich-shuttle-control-top
+UP_BUTTON=jquery=div.rich-shuttle-controls:eq(1) div.rich-shuttle-control-up
+DOWN_BUTTON=jquery=div.rich-shuttle-controls:eq(1) div.rich-shuttle-control-down
+LAST_BUTTON=jquery=div.rich-shuttle-controls:eq(1) div.rich-shuttle-control-bottom
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/orderingList/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/orderingList/locators.properties 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/orderingList/locators.properties 2009-11-06 17:32:08 UTC (rev 15848)
@@ -1,10 +1,10 @@
-EXAMPLE_HEADER=//fieldset[1]/legend
-TABLE_LINES=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/table/tbody/tr[2]/td[1]/div/div[2]/table/tbody/tr
-TABLE_LINE_PREFORMATTED=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/table/tbody/tr[2]/td[1]/div/div[2]/table/tbody/tr[{0}]/td[1]
-SELECTION=//fieldset[1]/div/form/table/tbody/tr/td[2]/div/div[2]
-SELECTION_PREFORMATTED=//fieldset[1]/div/form/table/tbody/tr/td[2]/div/div[2]/ul/li[{0}]
+EXAMPLE_HEADER=jquery=fieldset > legend
+TABLE_LINES=jquery=table.rich-ordering-list-items tr.rich-ordering-list-row
+TABLE_LINE_PREFORMATTED=jquery=table.rich-ordering-list-items tr:eq({0}) > td:eq(0)
+SELECTION=jquery=div[id$=output] div.rich-panel-body
+SELECTION_PREFORMATTED=jquery=div[id$=output] div.rich-panel-body li:nth-child({0})
-BUTTON_FIRST=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/table/tbody/tr[2]/td[2]/div/div[1]
-BUTTON_UP=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/table/tbody/tr[2]/td[2]/div/div[3]
-BUTTON_DOWN=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/table/tbody/tr[2]/td[2]/div/div[5]
-BUTTON_LAST=//fieldset[1]/div/form/table/tbody/tr/td[1]/div/table/tbody/tr[2]/td[2]/div/div[7]
\ No newline at end of file
+BUTTON_FIRST=jquery=div.rich-ordering-list-button-layout div.rich-ordering-control-top
+BUTTON_UP=jquery=div.rich-ordering-list-button-layout div.rich-ordering-control-up
+BUTTON_DOWN=jquery=div.rich-ordering-list-button-layout div.rich-ordering-control-down
+BUTTON_LAST=jquery=div.rich-ordering-list-button-layout div.rich-ordering-control-bottom
\ No newline at end of file
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/pickList/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/pickList/locators.properties 2009-11-06 10:03:04 UTC (rev 15847)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/pickList/locators.properties 2009-11-06 17:32:08 UTC (rev 15848)
@@ -1,23 +1,23 @@
-FIRST_EXAMPLE_HEADER=//fieldset[1]/legend
-FIRST_LEFT_ITEMS=//fieldset[1]/div/table/tbody/tr/td[1]/div/table/tbody/tr/td/div/div/table/tbody/tr
-FIRST_LEFT_FIRST_ITEM=//fieldset[1]/div/table/tbody/tr/td[1]/div/table/tbody/tr/td/div/div/table/tbody/tr[1]
-FIRST_RIGHT_ITEMS=//fieldset[1]/div/table/tbody/tr/td[3]/div/table/tbody/tr/td/div/div/table/tbody/tr
-FIRST_RIGHT_FIRST_ITEM=//fieldset[1]/div/table/tbody/tr/td[3]/div/table/tbody/tr/td/div/div/table/tbody/tr[1]
-FIRST_BUTTON_COPY_ALL=//fieldset[1]/div/table/tbody/tr/td[2]/div/div[1]
-FIRST_BUTTON_COPY=//fieldset[1]/div/table/tbody/tr/td[2]/div/div[3]
-FIRST_BUTTON_REMOVE=//fieldset[1]/div/table/tbody/tr/td[2]/div/div[5]
-FIRST_BUTTON_REMOVE_ALL=//fieldset[1]/div/table/tbody/tr/td[2]/div/div[7]
+FIRST_EXAMPLE_HEADER=jquery=fieldset:eq(0) > legend
+FIRST_LEFT_ITEMS=jquery=fieldset:eq(0) div.rich-picklist-source-items tr.rich-picklist-source-row
+FIRST_LEFT_FIRST_ITEM=jquery=fieldset:eq(0) div.rich-picklist-source-items tr.rich-picklist-source-row:eq(0)
+FIRST_RIGHT_ITEMS=jquery=fieldset:eq(0) div.rich-picklist-target-items tr.rich-picklist-source-row
+FIRST_RIGHT_FIRST_ITEM=jquery=fieldset:eq(0) div.rich-picklist-target-items tr.rich-picklist-source-row:eq(0)
+FIRST_BUTTON_COPY_ALL=jquery=fieldset:eq(0) div.rich-picklist-controls div.rich-picklist-control-copyall
+FIRST_BUTTON_COPY=jquery=fieldset:eq(0) div.rich-picklist-controls div.rich-picklist-control-copy
+FIRST_BUTTON_REMOVE=jquery=fieldset:eq(0) div.rich-picklist-controls div.rich-picklist-control-remove
+FIRST_BUTTON_REMOVE_ALL=jquery=fieldset:eq(0) div.rich-picklist-controls div.rich-picklist-control-removeall
-SECOND_EXAMPLE_HEADER=//fieldset[1]/legend
-SECOND_LEFT_ITEMS=//fieldset[2]/div/form/table/tbody/tr/td[1]/table/tbody/tr/td[1]/div/table/tbody/tr/td/div/div/table/tbody/tr
-SECOND_LEFT_FIRST_ITEM=//fieldset[2]/div/form/table/tbody/tr/td[1]/table/tbody/tr/td[1]/div/table/tbody/tr/td/div/div/table/tbody/tr[1]
-SECOND_RIGHT_ITEMS=//fieldset[2]/div/form/table/tbody/tr/td[1]/table/tbody/tr/td[3]/div/table/tbody/tr/td/div/div/table/tbody/tr
-SECOND_RIGHT_FIRST_ITEM=//fieldset[2]/div/form/table/tbody/tr/td[1]/table/tbody/tr/td[3]/div/table/tbody/tr/td/div/div/table/tbody/tr[1]
-SECOND_BUTTON_COPY_ALL=//fieldset[2]/div/form/table/tbody/tr/td[1]/table/tbody/tr/td[2]/div/div[1]
-SECOND_BUTTON_COPY=//fieldset[2]/div/form/table/tbody/tr/td[1]/table/tbody/tr/td[2]/div/div[3]
-SECOND_BUTTON_REMOVE=//fieldset[2]/div/form/table/tbody/tr/td[1]/table/tbody/tr/td[2]/div/div[5]
-SECOND_BUTTON_REMOVE_ALL=//fieldset[2]/div/form/table/tbody/tr/td[1]/table/tbody/tr/td[2]/div/div[7]
+SECOND_EXAMPLE_HEADER=jquery=fieldset:eq(1) > legend
+SECOND_LEFT_ITEMS=jquery=fieldset:eq(1) div.rich-picklist-source-items tr.rich-picklist-source-row
+SECOND_LEFT_FIRST_ITEM=jquery=fieldset:eq(1) div.rich-picklist-source-items tr.rich-picklist-source-row:eq(0)
+SECOND_RIGHT_ITEMS=jquery=fieldset:eq(1) div.rich-picklist-target-items tr.rich-picklist-source-row
+SECOND_RIGHT_FIRST_ITEM=jquery=fieldset:eq(1) div.rich-picklist-target-items tr.rich-picklist-source-row:eq(0)
+SECOND_BUTTON_COPY_ALL=jquery=fieldset:eq(1) div.rich-picklist-controls div.rich-picklist-control-copyall
+SECOND_BUTTON_COPY=jquery=fieldset:eq(1) div.rich-picklist-controls div.rich-picklist-control-copy
+SECOND_BUTTON_REMOVE=jquery=fieldset:eq(1) div.rich-picklist-controls div.rich-picklist-control-remove
+SECOND_BUTTON_REMOVE_ALL=jquery=fieldset:eq(1) div.rich-picklist-controls div.rich-picklist-control-removeall
-SECOND_CHOSEN_OPTIONS_UL=//fieldset[2]/div/form/table/tbody/tr/td[2]/div/div[2]/ul
-SECOND_CHOSEN_OPTIONS_LI=//fieldset[2]/div/form/table/tbody/tr/td[2]/div/div[2]/ul/li
-SECOND_CHOSEN_OPTIONS_LI1=//fieldset[2]/div/form/table/tbody/tr/td[2]/div/div[2]/ul/li[1]
\ No newline at end of file
+SECOND_CHOSEN_OPTIONS_UL=jquery=fieldset:eq(1) td.top:eq(1) ul
+SECOND_CHOSEN_OPTIONS_LI=jquery=fieldset:eq(1) td.top:eq(1) li
+SECOND_CHOSEN_OPTIONS_LI1=jquery=fieldset:eq(1) td.top:eq(1) li:eq(0)
\ No newline at end of file
16 years, 8 months
JBoss Rich Faces SVN: r15847 - in branches/sandbox/3.3.X_JSF2: framework and 6 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: amarkhel
Date: 2009-11-06 05:03:04 -0500 (Fri, 06 Nov 2009)
New Revision: 15847
Modified:
branches/sandbox/3.3.X_JSF2/framework/api/pom.xml
branches/sandbox/3.3.X_JSF2/framework/impl/pom.xml
branches/sandbox/3.3.X_JSF2/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java
branches/sandbox/3.3.X_JSF2/framework/jsf-test/pom.xml
branches/sandbox/3.3.X_JSF2/framework/pom.xml
branches/sandbox/3.3.X_JSF2/framework/test/pom.xml
branches/sandbox/3.3.X_JSF2/pom.xml
branches/sandbox/3.3.X_JSF2/ui/pom.xml
Log:
Modified: branches/sandbox/3.3.X_JSF2/framework/api/pom.xml
===================================================================
--- branches/sandbox/3.3.X_JSF2/framework/api/pom.xml 2009-11-06 06:56:53 UTC (rev 15846)
+++ branches/sandbox/3.3.X_JSF2/framework/api/pom.xml 2009-11-06 10:03:04 UTC (rev 15847)
@@ -8,7 +8,7 @@
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-api</artifactId>
<name>Java Server Faces AJAX framework API</name>
- <version>${richfaces.version}</version>
+ <version>3.3.3-jsf2-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>commons-collections</groupId>
Modified: branches/sandbox/3.3.X_JSF2/framework/impl/pom.xml
===================================================================
--- branches/sandbox/3.3.X_JSF2/framework/impl/pom.xml 2009-11-06 06:56:53 UTC (rev 15846)
+++ branches/sandbox/3.3.X_JSF2/framework/impl/pom.xml 2009-11-06 10:03:04 UTC (rev 15847)
@@ -9,7 +9,7 @@
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-impl</artifactId>
<name>Java Server Faces AJAX framework implementation</name>
- <version>${richfaces.version}</version>
+ <version>3.3.3-jsf2-SNAPSHOT</version>
<build>
<resources>
<resource>
@@ -56,7 +56,7 @@
<plugin>
<groupId>org.richfaces.cdk</groupId>
<artifactId>maven-javascript-plugin</artifactId>
- <version>${root.version}</version>
+ <version>3.3.3-SNAPSHOT</version>
<executions>
<execution>
<goals>
@@ -161,7 +161,7 @@
<dependency>
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-api</artifactId>
- <version>${richfaces.version}</version>
+ <version>3.3.3-jsf2-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
Modified: branches/sandbox/3.3.X_JSF2/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java
===================================================================
--- branches/sandbox/3.3.X_JSF2/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java 2009-11-06 06:56:53 UTC (rev 15846)
+++ branches/sandbox/3.3.X_JSF2/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java 2009-11-06 10:03:04 UTC (rev 15847)
@@ -253,7 +253,7 @@
}
}
// Broadcast phase events.
- broadcastEvents(context, phase);
+ pushEvents(context, phase);
// Process afterPhase listeners.
processPhaseListeners(context, phase, false);
}
@@ -283,7 +283,7 @@
* @param phaseId -
* phase, for which events must be processed.
*/
- public void broadcastEvents(FacesContext context, PhaseId phaseId) {
+ void pushEvents(FacesContext context, PhaseId phaseId) {
EventsQueue[] events = getEvents();
EventsQueue anyPhaseEvents = events[PhaseId.ANY_PHASE.getOrdinal()];
EventsQueue phaseEvents = events[phaseId.getOrdinal()];
Modified: branches/sandbox/3.3.X_JSF2/framework/jsf-test/pom.xml
===================================================================
--- branches/sandbox/3.3.X_JSF2/framework/jsf-test/pom.xml 2009-11-06 06:56:53 UTC (rev 15846)
+++ branches/sandbox/3.3.X_JSF2/framework/jsf-test/pom.xml 2009-11-06 10:03:04 UTC (rev 15847)
@@ -10,29 +10,27 @@
<groupId>org.richfaces.framework</groupId>
<artifactId>jsf-test</artifactId>
<name>jsf-test</name>
- <version>${richfaces.version}</version>
+ <version>3.3.3-jsf2-SNAPSHOT</version>
<profiles>
<profile>
<id>jsf2</id>
<properties>
<jsf.api.groupId>com.sun.faces</jsf.api.groupId>
<jsf.impl.groupId>com.sun.faces</jsf.impl.groupId>
- <jsf.api.version>2.0.0-Beta2</jsf.api.version>
- <jsf.impl.version>2.0.0-Beta2</jsf.impl.version>
- <richfaces.version>3.3.3-jsf2-SNAPSHOT</richfaces.version>
- <root.version>3.3.3-SNAPSHOT</root.version>
+ <jsf.api.version>2.0.1</jsf.api.version>
+ <jsf.impl.version>2.0.1</jsf.impl.version>
</properties>
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
- <version>2.0.0-Beta2</version>
+ <version>2.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
- <version>2.0.0-Beta2</version>
+ <version>2.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
@@ -44,8 +42,6 @@
<jsf.impl.groupId>javax.faces</jsf.impl.groupId>
<jsf.api.version>1.2_12</jsf.api.version>
<jsf.impl.version>1.2_12</jsf.impl.version>
- <richfaces.version>3.3.3-SNAPSHOT</richfaces.version>
- <root.version>3.3.3-SNAPSHOT</root.version>
</properties>
<dependencies>
<dependency>
Modified: branches/sandbox/3.3.X_JSF2/framework/pom.xml
===================================================================
--- branches/sandbox/3.3.X_JSF2/framework/pom.xml 2009-11-06 06:56:53 UTC (rev 15846)
+++ branches/sandbox/3.3.X_JSF2/framework/pom.xml 2009-11-06 10:03:04 UTC (rev 15847)
@@ -7,7 +7,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.richfaces</groupId>
<artifactId>framework</artifactId>
- <version>${richfaces.version}</version>
+ <version>3.3.3-jsf2-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Java Server Faces AJAX framework</name>
<build>
@@ -60,16 +60,14 @@
<properties>
<jsf.api.groupId>com.sun.faces</jsf.api.groupId>
<jsf.impl.groupId>com.sun.faces</jsf.impl.groupId>
- <jsf.api.version>2.0.0-Beta2</jsf.api.version>
- <jsf.impl.version>2.0.0-Beta2</jsf.impl.version>
- <richfaces.version>3.3.3-jsf2-SNAPSHOT</richfaces.version>
- <root.version>3.3.3-SNAPSHOT</root.version>
+ <jsf.api.version>2.0.1</jsf.api.version>
+ <jsf.impl.version>2.0.1</jsf.impl.version>
</properties>
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
- <version>2.0.0-Beta2</version>
+ <version>2.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
@@ -81,8 +79,6 @@
<jsf.impl.groupId>javax.faces</jsf.impl.groupId>
<jsf.api.version>1.2_12</jsf.api.version>
<jsf.impl.version>1.2_12</jsf.impl.version>
- <richfaces.version>3.3.3-SNAPSHOT</richfaces.version>
- <root.version>3.3.3-SNAPSHOT</root.version>
</properties>
<dependencies>
<dependency>
@@ -104,7 +100,7 @@
<dependency>
<groupId>com.sun.facelets</groupId>
<artifactId>jsf-facelets</artifactId>
- <version>1.1.14</version>
+ <version>1.1.15.B1</version>
<optional>true</optional>
</dependency>
<dependency>
Modified: branches/sandbox/3.3.X_JSF2/framework/test/pom.xml
===================================================================
--- branches/sandbox/3.3.X_JSF2/framework/test/pom.xml 2009-11-06 06:56:53 UTC (rev 15846)
+++ branches/sandbox/3.3.X_JSF2/framework/test/pom.xml 2009-11-06 10:03:04 UTC (rev 15847)
@@ -7,7 +7,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-test</artifactId>
- <version>${richfaces.version}</version>
+ <version>3.3.3-jsf2-SNAPSHOT</version>
<name>Ajax4Jsf test framework</name>
<url>https://ajax4jsf.dev.java.net</url>
<profiles>
@@ -16,16 +16,14 @@
<properties>
<jsf.api.groupId>com.sun.faces</jsf.api.groupId>
<jsf.impl.groupId>com.sun.faces</jsf.impl.groupId>
- <jsf.api.version>2.0.0-Beta2</jsf.api.version>
- <jsf.impl.version>2.0.0-Beta2</jsf.impl.version>
- <richfaces.version>3.3.3-jsf2-SNAPSHOT</richfaces.version>
- <root.version>3.3.3-SNAPSHOT</root.version>
+ <jsf.api.version>2.0.1</jsf.api.version>
+ <jsf.impl.version>2.0.1</jsf.impl.version>
</properties>
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
- <artifactId>jsf-api</artifactId>
- <version>2.0.0-Beta2</version>
+ <artifactId>jsf-impl</artifactId>
+ <version>2.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
@@ -37,13 +35,11 @@
<jsf.impl.groupId>javax.faces</jsf.impl.groupId>
<jsf.api.version>1.2_12</jsf.api.version>
<jsf.impl.version>1.2_12</jsf.impl.version>
- <richfaces.version>3.3.3-SNAPSHOT</richfaces.version>
- <root.version>3.3.3-SNAPSHOT</root.version>
</properties>
<dependencies>
<dependency>
<groupId>javax.faces</groupId>
- <artifactId>jsf-api</artifactId>
+ <artifactId>jsf-impl</artifactId>
<version>1.2_12</version>
<scope>provided</scope>
</dependency>
Modified: branches/sandbox/3.3.X_JSF2/pom.xml
===================================================================
--- branches/sandbox/3.3.X_JSF2/pom.xml 2009-11-06 06:56:53 UTC (rev 15846)
+++ branches/sandbox/3.3.X_JSF2/pom.xml 2009-11-06 10:03:04 UTC (rev 15847)
@@ -113,6 +113,12 @@
<url>http://download.java.net/maven/1</url>
<layout>legacy</layout>
</repository>
+<repository>
+ <id>maven2-repository.dev.java.net</id>
+ <name>Java.net Repository for Maven</name>
+ <url>http://download.java.net/maven/2/</url>
+ <layout>default</layout>
+</repository>
<repository>
<releases />
@@ -313,10 +319,8 @@
<properties>
<jsf.api.groupId>com.sun.faces</jsf.api.groupId>
<jsf.impl.groupId>com.sun.faces</jsf.impl.groupId>
- <jsf.api.version>2.0.0-Beta2</jsf.api.version>
- <jsf.impl.version>2.0.0-Beta2</jsf.impl.version>
- <richfaces.version>3.3.3-jsf2-SNAPSHOT</richfaces.version>
- <root.version>3.3.3-SNAPSHOT</root.version>
+ <jsf.api.version>2.0.1</jsf.api.version>
+ <jsf.impl.version>2.0.1</jsf.impl.version>
</properties>
</profile>
@@ -327,8 +331,6 @@
<jsf.impl.groupId>javax.faces</jsf.impl.groupId>
<jsf.api.version>1.2_12</jsf.api.version>
<jsf.impl.version>1.2_12</jsf.impl.version>
- <richfaces.version>3.3.3-SNAPSHOT</richfaces.version>
- <root.version>3.3.3-SNAPSHOT</root.version>
</properties>
</profile>
Modified: branches/sandbox/3.3.X_JSF2/ui/pom.xml
===================================================================
--- branches/sandbox/3.3.X_JSF2/ui/pom.xml 2009-11-06 06:56:53 UTC (rev 15846)
+++ branches/sandbox/3.3.X_JSF2/ui/pom.xml 2009-11-06 10:03:04 UTC (rev 15847)
@@ -85,17 +85,20 @@
<properties>
<jsf.api.groupId>com.sun.faces</jsf.api.groupId>
<jsf.impl.groupId>com.sun.faces</jsf.impl.groupId>
- <jsf.api.version>2.0.0-Beta2</jsf.api.version>
- <jsf.impl.version>2.0.0-Beta2</jsf.impl.version>
- <richfaces.version>3.3.3-jsf2-SNAPSHOT</richfaces.version>
- <root.version>3.3.3-SNAPSHOT</root.version>
+ <jsf.api.version>2.0.1</jsf.api.version>
+ <jsf.impl.version>2.0.1</jsf.impl.version>
</properties>
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
- <version>2.0.0-Beta2</version>
+ <version>2.0.1</version>
<scope>provided</scope>
+ </dependency><dependency>
+ <groupId>com.sun.faces</groupId>
+ <artifactId>jsf-impl</artifactId>
+ <version>2.0.1</version>
+ <scope>provided</scope>
</dependency>
</dependencies>
</profile>
@@ -106,8 +109,6 @@
<jsf.impl.groupId>javax.faces</jsf.impl.groupId>
<jsf.api.version>1.2_12</jsf.api.version>
<jsf.impl.version>1.2_12</jsf.impl.version>
- <richfaces.version>3.3.3-SNAPSHOT</richfaces.version>
- <root.version>3.3.3-SNAPSHOT</root.version>
</properties>
<dependencies>
<dependency>
@@ -116,6 +117,12 @@
<version>1.2_12</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-impl</artifactId>
+ <version>1.2_12</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
</profile>
@@ -178,18 +185,18 @@
<dependency>
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-impl</artifactId>
- <version>${richfaces.version}</version>
+ <version>3.3.3-jsf2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-test</artifactId>
- <version>${richfaces.version}</version>
+ <version>3.3.3-jsf2-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.facelets</groupId>
<artifactId>jsf-facelets</artifactId>
- <version>1.1.14</version>
+ <version>1.1.15.B1</version>
<optional>true</optional>
</dependency>
<dependency>
16 years, 8 months
JBoss Rich Faces SVN: r15846 - in root/docs/trunk/Component_Reference/en-US: images and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: SeanRogers
Date: 2009-11-06 01:56:53 -0500 (Fri, 06 Nov 2009)
New Revision: 15846
Added:
root/docs/trunk/Component_Reference/en-US/images/panelMenuGroupIcons.png
Modified:
root/docs/trunk/Component_Reference/en-US/Book_Info.xml
root/docs/trunk/Component_Reference/en-US/Component_Reference.xml
root/docs/trunk/Component_Reference/en-US/Panels_and_containers.xml
root/docs/trunk/Component_Reference/en-US/Preface.xml
root/docs/trunk/Component_Reference/en-US/Rich_inputs.xml
root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml
Log:
Worked on Rich Inputs and Panels and Containers
Modified: root/docs/trunk/Component_Reference/en-US/Book_Info.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Book_Info.xml 2009-11-06 00:27:52 UTC (rev 15845)
+++ root/docs/trunk/Component_Reference/en-US/Book_Info.xml 2009-11-06 06:56:53 UTC (rev 15846)
@@ -27,7 +27,7 @@
<year>&YEAR;</year>
<holder>&HOLDER;</holder>
</copyright>
- <!-- FOR PUBLICAN --><xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK: --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- FOR PUBLICAN --><xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK: --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
Modified: root/docs/trunk/Component_Reference/en-US/Component_Reference.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Component_Reference.xml 2009-11-06 00:27:52 UTC (rev 15845)
+++ root/docs/trunk/Component_Reference/en-US/Component_Reference.xml 2009-11-06 06:56:53 UTC (rev 15846)
@@ -4,7 +4,7 @@
<book status="draft">
<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> --><xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> --><xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Common_Ajax_attributes.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Rich_inputs.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Panels_and_containers.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
Modified: root/docs/trunk/Component_Reference/en-US/Panels_and_containers.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Panels_and_containers.xml 2009-11-06 00:27:52 UTC (rev 15845)
+++ root/docs/trunk/Component_Reference/en-US/Panels_and_containers.xml 2009-11-06 06:56:53 UTC (rev 15846)
@@ -5,108 +5,219 @@
<chapter id="chap-Component_Reference-Panels_and_containers">
<title>Panels and containers</title>
<para>
- Incomplete
+ This chapter details those components which act as panels and containers to hold groups of other components.
</para>
<section id="sect-Component_Reference-Panels_and_containers-a4jform">
- <title>a4j:form</title>
+ <title><a4j:form></title>
<para>
- Incomplete
+ The <classname><a4j:form></classname> builds on the functionality of the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:form></classname>, adding Ajax capabilities to the form.
</para>
+ <note>
+ <title>Note</title>
+ <para>
+ The <acronym>JSF</acronym> component <classname><h:form></classname>, on which the <classname><a4j:form></classname> component is based, had an issue whereby the <classname><h:commandLink></classname> component could not be re-rendered without re-rendering the entire form. <classname><a4j:form></classname> and <classname><a4j:commandLink></classname> fix this issue.
+ </para>
+ </note>
+ <para>
+ The <classname><a4j:form></classname> component can add indirect Ajax support to non-Ajax components on the form by setting <code>ajaxSubmit="true"</code>. It then uses the standard Ajax component attributes and updates components specified with the <code>render</code> attribute.
+ </para>
+ <important>
+ <title>Important</title>
+ <para>
+ <classname><a4j:form></classname> should not use <code>ajaxSubmit="true"</code> if it contains other Ajax-capable components.
+ </para>
+ <para>
+ Additionally, due to security reasons the file upload form element cannot be indirectly made Ajax-capable with <classname><a4j:form></classname>.
+ </para>
+ </important>
</section>
<section id="sect-Component_Reference-Panels_and_containers-a4joutputPanel">
- <title>a4j:outputPanel</title>
+ <title><a4j:outputPanel></title>
<para>
- Incomplete
+ The <classname><a4j:outputPanel></classname> component is used to group together components in to update them as a whole, rather than having to specify the components individually.
</para>
+ <para>
+ The <code>layout</code> attribute can be used to determine how the component is rendered in <acronym>HTML</acronym>:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <code>layout="inline"</code> is the default behavior, which will render the component as a pair of <code><span></code> tags containing the child components.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>layout="block"</code> will render the component as a pair of <code><div></code> tags containing the child components, which will use any defined <code><div></code> element styles.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>layout="none"</code> will render the component as a pair of <code><span></code> tags with an identifier equal to that of a child component. If the child component is rendered then the <code><span></code> are not included, leaving no markup representing the <classname><a4j:outputPanel></classname> in <acronym>HTML</acronym>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Setting <code>ajaxRendered="true"</code> will cause the <classname><a4j:outputPanel></classname> to be updated with each Ajax response for the page, even when not listed explicitly by the requesting component. This can in turn be overridden by specific attributes on any requesting components.
+ </para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-a4jregion">
- <title>a4j:region</title>
+ <title><a4j:region></title>
<para>
- Incomplete
+ The <classname><a4j:region></classname> component specifies a part of the document object model (<acronym>DOM</acronym>) tree to be processed on the server. The processing includes data handling during decoding, conversion, validation, and model updating. When not using <classname><a4j:region></classname>, the entire view functions as a region.
</para>
+ <para>
+ The whole form is still submitted to the server, but only the specified region is processed. Regions can be nested, in which case only the immediate region of the component initiating the request will be processed.
+ </para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richmodalPanel">
- <title>rich:modalPanel</title>
+ <title><rich:modalPanel></title>
<para>
- Incomplete
+ The <classname><rich:modalPanel></classname> component provides a modal panel or window that blocks interaction with the rest of the application while active. It can be easily positioned on the screen, dragged to a new position by the user, and re-sized.
</para>
+ <important>
+ <title>Important</title>
+ <para>
+ The <classname><rich:modalPanel></classname> component should always be placed outside the original <classname><h:form></classname>, and must include its own <classname><h:form></classname> if performing submits.
+ </para>
+ </important>
+ <para>
+ By default, the modal panel can be both re-sized and re-positioned by the user. The minimum possible size for the panel can be set with the These abilities can be deactivated by setting <code>resizable</code> or <code>movable</code> to <literal>false</literal> as necessary. The state of the modal panel, including size and position on screen, can be maintained and restored after submitting and reloading by setting <code>keepVisualState="true"</code>.
+ </para>
+ <para>
+ If <code>showWhenRendered="true"</code> then the modal panel will display when the page is first loaded.
+ </para>
+ <example id="exam-Component_Reference-richmodalPanel-richmodalPanel_example">
+ <title><rich:modalPanel> example</title>
+
+<programlisting language="xml">
+<a onclick="Richfaces.showModalPanel('pnl');" href="#">Show ModalPanel</a>
+<a4j:form>
+ <rich:modalPanel id="pnl" >
+ <a onclick="Richfaces.hideModalPanel('pnl');" href="#">Hide ModalPanel</a>
+ </rich:modalPanel>
+</a4j:form>
+</programlisting>
+ </example>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanel">
- <title>rich:panel</title>
+ <title><rich:panel></title>
<para>
- Incomplete
+ The <classname><rich:panel></classname> component is a bordered panel with an optional header.
</para>
+ <para>
+ No attributes need to be listed for basic usage. To add a header to the panel, use the <code>header</code> attribute to specify the text to appear in the header. Alternatively the header can be constructed using a header facet.
+ </para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanelBar">
- <title>rich:panelBar</title>
+ <title><rich:panelBar></title>
<para>
- Incomplete
+ The <classname><rich:panelBar></classname> is a series of panels stacked on top of each other, each collapsed such that only the header of the panel is showing. When the header of a panel is clicked, it is expanded to show the content of the panel. Clicking on a different header will collapse the previous panel and epand the selected one. Another name for the component is "accordion". Each panel in contained in a <classname><rich:panelBar></classname> component is a <classname><rich:panelBarItem></classname> component.
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanelBarItem">
- <title>rich:panelBarItem</title>
+ <title><rich:panelBarItem></title>
<para>
- Incomplete
+ The <classname><rich:panelBarItem></classname> component is a panel for use with the <classname><rich:panelBar></classname> component.
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanelMenu">
- <title>rich:panelMenu</title>
+ <title><rich:panelMenu></title>
<para>
- Incomplete
+ The <classname><rich:panelMenu></classname> component can be used in conjunction with <classname><rich:panelMenuItem></classname> and <classname><rich:panelMenuGroup></classname> to create an expanding, hierarchical menu. The <classname><rich:panelMenu></classname> component's appearance can be highly customized, and the hierarchy can stretch to any number of sub-levels.
</para>
+ <para>
+ The <code>selectedChild</code> attribute is used to point to the name of the currently selected menu item.
+ </para>
+ <para>
+ By default, the event to expand the menu is a mouse click. This can be changed by setting <code>event</code> to specify the preferred event. Several sub-menus can be expanded a once unless the <code>expandSingle</code> is set to <literal>true</literal>, which only allows one sub-menu at a time to be expanded.
+ </para>
+ <para>
+ The <code>mode</code> attribute defines the submission mode for normal menu items, and the <code>expandMode</code> attribute defines the submission mode for menu items that expand and collapse. The settings for these attributes apply to the entire menu unless a menu item defines its own individual <code>mode</code> or <code>expandMode</code>. The values for <code>mode</code> and <code>expandMode</code> are:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>server</literal>, the default setting, which submits the form normally and completely refreshes the page;
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ajax</literal>, which performs an Ajax form submission, and re-renders elements specified with the <code>render</code> attribute; and
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>none</literal>, which causes the <code>action</code> and <code>actionListener</code> items to be ignored, and the behavior is fully defined by the nested components instead of responses from submissions.
+ </para>
+ </listitem>
+ </itemizedlist>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanelMenuGroup">
- <title>rich:panelMenuGroup</title>
+ <title><rich:panelMenuGroup></title>
<para>
- Incomplete
+ The <classname><rich:panelMenuGroup></classname> component defines a group of <classname><rich:panelMenuItem></classname> components inside a <classname><rich:panelMenu></classname>.
</para>
+ <para>
+ If the <code>expandMode</code> is unspecified, the submission behavior for the group is inherited from the parent <classname><rich:panelMenu></classname>. Otherwise, the <code>expandMode</code> setting is used instead of the parent's behavior.
+ </para>
+ <para>
+ Icons for menu items can be chosen from a set of standard icons. There are three attributes that relate to the different menu states that the icon represents: <code>iconExpanded</code>, <code>iconCollapsed</code>, and <code>iconDisabled</code>. The standard icons are shown in <xref linkend="figu-Component_Reference-richpanelMenuGroup-Standard_icons" />.
+ </para>
+ <figure id="figu-Component_Reference-richpanelMenuGroup-Standard_icons">
+ <title>Standard icons</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/panelMenuGroupIcons.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanelMenuItem">
- <title>rich:panelMenuItem</title>
+ <title><rich:panelMenuItem></title>
<para>
Incomplete
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richsimpleTogglePanel">
- <title>rich:simpleTogglePanel</title>
+ <title><rich:simpleTogglePanel></title>
<para>
Incomplete
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richtabPanel">
- <title>rich:tabPanel</title>
+ <title><rich:tabPanel></title>
<para>
Incomplete
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richtab">
- <title>rich:tab</title>
+ <title><rich:tab></title>
<para>
Incomplete
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richtogglePanel">
- <title>rich:togglePanel</title>
+ <title><rich:togglePanel></title>
<para>
Incomplete
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richtoggleControl">
- <title>rich:toggleControl</title>
+ <title><rich:toggleControl></title>
<para>
Incomplete
</para>
Modified: root/docs/trunk/Component_Reference/en-US/Preface.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Preface.xml 2009-11-06 00:27:52 UTC (rev 15845)
+++ root/docs/trunk/Component_Reference/en-US/Preface.xml 2009-11-06 06:56:53 UTC (rev 15846)
@@ -4,10 +4,10 @@
<preface id="pref-Component_Reference-Preface">
<title>Preface</title>
- <!-- FOR JDOCBOOK --><xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR PUBLICAN --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- FOR JDOCBOOK --><xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR PUBLICAN --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
- <!-- PUBLICAN'S ORIGINAL XINCLUDES --><xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- PUBLICAN'S ORIGINAL XINCLUDES --><xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
</xi:fallback>
Modified: root/docs/trunk/Component_Reference/en-US/Rich_inputs.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Rich_inputs.xml 2009-11-06 00:27:52 UTC (rev 15845)
+++ root/docs/trunk/Component_Reference/en-US/Rich_inputs.xml 2009-11-06 06:56:53 UTC (rev 15846)
@@ -113,8 +113,9 @@
<para>
Using the <code>suggestionValues</code> attribute, and defining a collection of suggestions:
</para>
- <example>
+ <example id="exam-Component_Reference-richcomboBox-Defining_suggestion_values">
<title>Defining suggestion values</title>
+
<programlisting language="XML">
<rich:comboBox value="#{bean.state}" suggestionValues="#{bean.suggestions}"
</programlisting>
@@ -177,8 +178,9 @@
<para>
Basic usage requires the <code>uploadData</code> attribute, pointing to the collection of uploaded files.
</para>
- <example>
+ <example id="exam-Component_Reference-richfileUpload-Basic_usage_of_richfileUpload">
<title>Basic usage of <rich:fileUpload></title>
+
<programlisting language="XML">
<rich:fileUpload uploadData="#{bean.data}" />
</programlisting>
Modified: root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml 2009-11-06 00:27:52 UTC (rev 15845)
+++ root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml 2009-11-06 06:56:53 UTC (rev 15846)
@@ -34,7 +34,7 @@
<year>2009</year>
<holder>Red Hat</holder>
</copyright>
- <!-- FOR PUBLICAN --><legalnotice xml:base="Common_Content/Legal_Notice.xml">
+ <!-- FOR PUBLICAN --><legalnotice xml:base="Common_Content/Legal_Notice.xml">
<para>
Copyright <trademark class="copyright"/> 2009 Red Hat This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url="http://www.gnu.org/licenses/fdl.txt">http://www.gnu.org/licenses/fdl.txt</ulink>).
</para>
@@ -51,7 +51,7 @@
</author>
</authorgroup>
</bookinfo>
- <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> --><chapter id="chap-Component_Reference-Introduction" lang="en-US">
+ <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> --><chapter id="chap-Component_Reference-Introduction" lang="en-US">
<title>Introduction</title>
<para>
This book is a guide to the various components available in the RichFaces 4.0 framework. It includes descriptions of the role of the components, details on how best to use them, coded examples of their use, and basic references of their properties and attributes.
@@ -417,7 +417,7 @@
<para>
Using the <code>suggestionValues</code> attribute, and defining a collection of suggestions:
</para>
- <example>
+ <example id="exam-Component_Reference-richcomboBox-Defining_suggestion_values">
<title>Defining suggestion values</title>
<programlisting language="XML">
@@ -482,7 +482,7 @@
<para>
Basic usage requires the <code>uploadData</code> attribute, pointing to the collection of uploaded files.
</para>
- <example>
+ <example id="exam-Component_Reference-richfileUpload-Basic_usage_of_richfileUpload">
<title>Basic usage of <rich:fileUpload></title>
<programlisting language="XML">
@@ -709,108 +709,219 @@
<chapter id="chap-Component_Reference-Panels_and_containers" lang="en-US">
<title>Panels and containers</title>
<para>
- Incomplete
+ This chapter details those components which act as panels and containers to hold groups of other components.
</para>
<section id="sect-Component_Reference-Panels_and_containers-a4jform">
- <title>a4j:form</title>
+ <title><a4j:form></title>
<para>
- Incomplete
+ The <classname><a4j:form></classname> builds on the functionality of the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:form></classname>, adding Ajax capabilities to the form.
</para>
+ <note>
+ <title>Note</title>
+ <para>
+ The <acronym>JSF</acronym> component <classname><h:form></classname>, on which the <classname><a4j:form></classname> component is based, had an issue whereby the <classname><h:commandLink></classname> component could not be re-rendered without re-rendering the entire form. <classname><a4j:form></classname> and <classname><a4j:commandLink></classname> fix this issue.
+ </para>
+ </note>
+ <para>
+ The <classname><a4j:form></classname> component can add indirect Ajax support to non-Ajax components on the form by setting <code>ajaxSubmit="true"</code>. It then uses the standard Ajax component attributes and updates components specified with the <code>render</code> attribute.
+ </para>
+ <important>
+ <title>Important</title>
+ <para>
+ <classname><a4j:form></classname> should not use <code>ajaxSubmit="true"</code> if it contains other Ajax-capable components.
+ </para>
+ <para>
+ Additionally, due to security reasons the file upload form element cannot be indirectly made Ajax-capable with <classname><a4j:form></classname>.
+ </para>
+ </important>
</section>
<section id="sect-Component_Reference-Panels_and_containers-a4joutputPanel">
- <title>a4j:outputPanel</title>
+ <title><a4j:outputPanel></title>
<para>
- Incomplete
+ The <classname><a4j:outputPanel></classname> component is used to group together components in to update them as a whole, rather than having to specify the components individually.
</para>
+ <para>
+ The <code>layout</code> attribute can be used to determine how the component is rendered in <acronym>HTML</acronym>:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <code>layout="inline"</code> is the default behavior, which will render the component as a pair of <code><span></code> tags containing the child components.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>layout="block"</code> will render the component as a pair of <code><div></code> tags containing the child components, which will use any defined <code><div></code> element styles.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>layout="none"</code> will render the component as a pair of <code><span></code> tags with an identifier equal to that of a child component. If the child component is rendered then the <code><span></code> are not included, leaving no markup representing the <classname><a4j:outputPanel></classname> in <acronym>HTML</acronym>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Setting <code>ajaxRendered="true"</code> will cause the <classname><a4j:outputPanel></classname> to be updated with each Ajax response for the page, even when not listed explicitly by the requesting component. This can in turn be overridden by specific attributes on any requesting components.
+ </para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-a4jregion">
- <title>a4j:region</title>
+ <title><a4j:region></title>
<para>
- Incomplete
+ The <classname><a4j:region></classname> component specifies a part of the document object model (<acronym>DOM</acronym>) tree to be processed on the server. The processing includes data handling during decoding, conversion, validation, and model updating. When not using <classname><a4j:region></classname>, the entire view functions as a region.
</para>
+ <para>
+ The whole form is still submitted to the server, but only the specified region is processed. Regions can be nested, in which case only the immediate region of the component initiating the request will be processed.
+ </para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richmodalPanel">
- <title>rich:modalPanel</title>
+ <title><rich:modalPanel></title>
<para>
- Incomplete
+ The <classname><rich:modalPanel></classname> component provides a modal panel or window that blocks interaction with the rest of the application while active. It can be easily positioned on the screen, dragged to a new position by the user, and re-sized.
</para>
+ <important>
+ <title>Important</title>
+ <para>
+ The <classname><rich:modalPanel></classname> component should always be placed outside the original <classname><h:form></classname>, and must include its own <classname><h:form></classname> if performing submits.
+ </para>
+ </important>
+ <para>
+ By default, the modal panel can be both re-sized and re-positioned by the user. The minimum possible size for the panel can be set with the These abilities can be deactivated by setting <code>resizable</code> or <code>movable</code> to <literal>false</literal> as necessary. The state of the modal panel, including size and position on screen, can be maintained and restored after submitting and reloading by setting <code>keepVisualState="true"</code>.
+ </para>
+ <para>
+ If <code>showWhenRendered="true"</code> then the modal panel will display when the page is first loaded.
+ </para>
+ <example id="exam-Component_Reference-richmodalPanel-richmodalPanel_example">
+ <title><rich:modalPanel> example</title>
+
+<programlisting language="xml">
+<a onclick="Richfaces.showModalPanel('pnl');" href="#">Show ModalPanel</a>
+<a4j:form>
+ <rich:modalPanel id="pnl" >
+ <a onclick="Richfaces.hideModalPanel('pnl');" href="#">Hide ModalPanel</a>
+ </rich:modalPanel>
+</a4j:form>
+</programlisting>
+ </example>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanel">
- <title>rich:panel</title>
+ <title><rich:panel></title>
<para>
- Incomplete
+ The <classname><rich:panel></classname> component is a bordered panel with an optional header.
</para>
+ <para>
+ No attributes need to be listed for basic usage. To add a header to the panel, use the <code>header</code> attribute to specify the text to appear in the header. Alternatively the header can be constructed using a header facet.
+ </para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanelBar">
- <title>rich:panelBar</title>
+ <title><rich:panelBar></title>
<para>
- Incomplete
+ The <classname><rich:panelBar></classname> is a series of panels stacked on top of each other, each collapsed such that only the header of the panel is showing. When the header of a panel is clicked, it is expanded to show the content of the panel. Clicking on a different header will collapse the previous panel and epand the selected one. Another name for the component is "accordion". Each panel in contained in a <classname><rich:panelBar></classname> component is a <classname><rich:panelBarItem></classname> component.
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanelBarItem">
- <title>rich:panelBarItem</title>
+ <title><rich:panelBarItem></title>
<para>
- Incomplete
+ The <classname><rich:panelBarItem></classname> component is a panel for use with the <classname><rich:panelBar></classname> component.
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanelMenu">
- <title>rich:panelMenu</title>
+ <title><rich:panelMenu></title>
<para>
- Incomplete
+ The <classname><rich:panelMenu></classname> component can be used in conjunction with <classname><rich:panelMenuItem></classname> and <classname><rich:panelMenuGroup></classname> to create an expanding, hierarchical menu. The <classname><rich:panelMenu></classname> component's appearance can be highly customized, and the hierarchy can stretch to any number of sub-levels.
</para>
+ <para>
+ The <code>selectedChild</code> attribute is used to point to the name of the currently selected menu item.
+ </para>
+ <para>
+ By default, the event to expand the menu is a mouse click. This can be changed by setting <code>event</code> to specify the preferred event. Several sub-menus can be expanded a once unless the <code>expandSingle</code> is set to <literal>true</literal>, which only allows one sub-menu at a time to be expanded.
+ </para>
+ <para>
+ The <code>mode</code> attribute defines the submission mode for normal menu items, and the <code>expandMode</code> attribute defines the submission mode for menu items that expand and collapse. The settings for these attributes apply to the entire menu unless a menu item defines its own individual <code>mode</code> or <code>expandMode</code>. The values for <code>mode</code> and <code>expandMode</code> are:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>server</literal>, the default setting, which submits the form normally and completely refreshes the page;
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ajax</literal>, which performs an Ajax form submission, and re-renders elements specified with the <code>render</code> attribute; and
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>none</literal>, which causes the <code>action</code> and <code>actionListener</code> items to be ignored, and the behavior is fully defined by the nested components instead of responses from submissions.
+ </para>
+ </listitem>
+ </itemizedlist>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanelMenuGroup">
- <title>rich:panelMenuGroup</title>
+ <title><rich:panelMenuGroup></title>
<para>
- Incomplete
+ The <classname><rich:panelMenuGroup></classname> component defines a group of <classname><rich:panelMenuItem></classname> components inside a <classname><rich:panelMenu></classname>.
</para>
+ <para>
+ If the <code>expandMode</code> is unspecified, the submission behavior for the group is inherited from the parent <classname><rich:panelMenu></classname>. Otherwise, the <code>expandMode</code> setting is used instead of the parent's behavior.
+ </para>
+ <para>
+ Icons for menu items can be chosen from a set of standard icons. There are three attributes that relate to the different menu states that the icon represents: <code>iconExpanded</code>, <code>iconCollapsed</code>, and <code>iconDisabled</code>. The standard icons are shown in <xref linkend="figu-Component_Reference-richpanelMenuGroup-Standard_icons"/>.
+ </para>
+ <figure id="figu-Component_Reference-richpanelMenuGroup-Standard_icons">
+ <title>Standard icons</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/panelMenuGroupIcons.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanelMenuItem">
- <title>rich:panelMenuItem</title>
+ <title><rich:panelMenuItem></title>
<para>
Incomplete
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richsimpleTogglePanel">
- <title>rich:simpleTogglePanel</title>
+ <title><rich:simpleTogglePanel></title>
<para>
Incomplete
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richtabPanel">
- <title>rich:tabPanel</title>
+ <title><rich:tabPanel></title>
<para>
Incomplete
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richtab">
- <title>rich:tab</title>
+ <title><rich:tab></title>
<para>
Incomplete
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richtogglePanel">
- <title>rich:togglePanel</title>
+ <title><rich:togglePanel></title>
<para>
Incomplete
</para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richtoggleControl">
- <title>rich:toggleControl</title>
+ <title><rich:toggleControl></title>
<para>
Incomplete
</para>
Added: root/docs/trunk/Component_Reference/en-US/images/panelMenuGroupIcons.png
===================================================================
(Binary files differ)
Property changes on: root/docs/trunk/Component_Reference/en-US/images/panelMenuGroupIcons.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
16 years, 8 months
JBoss Rich Faces SVN: r15845 - in root/cdk/trunk/plugins/generator: src/main/java/org/richfaces/builder/templates and 5 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: alexsmirnov
Date: 2009-11-05 19:27:52 -0500 (Thu, 05 Nov 2009)
New Revision: 15845
Added:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassVisitor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/TemplateVisitor.java
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/XMLSchema.dtd
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/cdk-template.xsd
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/datatypes.dtd
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/web-facelettaglibrary_2_0.xsd
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/xhtml-el.xsd
Removed:
root/cdk/trunk/plugins/generator/src/main/xsd/cdk-template.xsd
root/cdk/trunk/plugins/generator/src/main/xsd/xhtml-el.xsd
Modified:
root/cdk/trunk/plugins/generator/pom.xml
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/builder/templates/BaseTemplateConsumer.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererTemplateParser.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/AnyElement.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/CdkBodyElement.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/CdkCallElement.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/ElementsHandler.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/ModelElement.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/ModelFragment.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/CdkEntityResolver.java
Log:
https://jira.jboss.org/jira/browse/RF-7732
Create visitor that will build Renderer class from model.
Modified: root/cdk/trunk/plugins/generator/pom.xml
===================================================================
--- root/cdk/trunk/plugins/generator/pom.xml 2009-11-05 20:37:23 UTC (rev 15844)
+++ root/cdk/trunk/plugins/generator/pom.xml 2009-11-06 00:27:52 UTC (rev 15845)
@@ -42,9 +42,9 @@
</goals>
<configuration>
<properties>
- <sourceSchema>src/main/xsd/xhtml-el.xsd</sourceSchema>
+ <sourceSchema>src/main/resources/META-INF/schema/xhtml-el.xsd</sourceSchema>
<targetNamespace>http://richfaces.org/xhtml-el</targetNamespace>
- <outputFile>attributes.ser</outputFile>
+ <outputFile>META-INF/schema/attributes.ser</outputFile>
</properties>
<classpath>
<element>
@@ -101,7 +101,7 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>freemarker</groupId>
+ <groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.9</version>
</dependency>
@@ -155,7 +155,7 @@
<version>1.3</version> </dependency>
-->
<dependency>
- <groupId>wutka</groupId>
+ <groupId>com.wutka</groupId>
<artifactId>dtdparser</artifactId>
<version>1.21</version>
</dependency>
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/builder/templates/BaseTemplateConsumer.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/builder/templates/BaseTemplateConsumer.java 2009-11-05 20:37:23 UTC (rev 15844)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/builder/templates/BaseTemplateConsumer.java 2009-11-06 00:27:52 UTC (rev 15845)
@@ -56,7 +56,7 @@
private static final Map<String, Set<String>> ELEMENTS_ATTRIBUTES;
static {
- InputStream serializedAttributesStream = BaseTemplateConsumer.class.getResourceAsStream("/attributes.ser");
+ InputStream serializedAttributesStream = BaseTemplateConsumer.class.getResourceAsStream("/META-INF/schema/attributes.ser");
try {
Added: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassVisitor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassVisitor.java (rev 0)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassVisitor.java 2009-11-06 00:27:52 UTC (rev 15845)
@@ -0,0 +1,143 @@
+/*
+ * $Id$
+ *
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.richfaces.cdk.templatecompiler;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Set;
+import java.util.Stack;
+import java.util.regex.Pattern;
+
+import org.richfaces.builder.model.JavaClass;
+import org.richfaces.builder.model.MethodBodyStatement;
+import org.richfaces.builder.templates.BaseTemplateConsumer;
+import org.richfaces.cdk.CdkException;
+import org.richfaces.cdk.templatecompiler.model.AnyElement;
+import org.richfaces.cdk.templatecompiler.model.CdkBodyElement;
+import org.richfaces.cdk.templatecompiler.model.CdkCallElement;
+import org.richfaces.cdk.templatecompiler.model.CompositeInterface;
+import org.richfaces.cdk.templatecompiler.model.TemplateVisitor;
+
+import com.google.common.collect.Lists;
+
+/**
+ * <p class="changed_added_4_0"></p>
+ * @author asmirnov(a)exadel.com
+ *
+ */
+public class RendererClassVisitor implements TemplateVisitor {
+
+ private static final Pattern EL_EXPRESSION = Pattern.compile("#\\{([^\\}]+)\\}");
+ private static final Pattern COMPONENT_ATTRIBUTES_EXPRESSION =
+ Pattern.compile("^component\\.attributes\\[(?:'|\")?([^'\"]+)(?:'|\")?\\]$");
+ private static final Map<String, Set<String>> ELEMENTS_ATTRIBUTES;
+ private final LinkedList<MethodBodyStatement> statements = Lists.newLinkedList();
+ private final JavaClass renderer;
+ private final CompositeInterface compositeInterface;
+
+ protected MethodBodyStatement currentStatement;
+
+ static {
+ InputStream serializedAttributesStream = RendererClassVisitor.class.getResourceAsStream("/META-INF/schema/attributes.ser");
+
+ try {
+
+ // TODO read default attributes values
+ // TODO detect URI attributes
+ ObjectInputStream ois = new ObjectInputStream(serializedAttributesStream);
+
+ ELEMENTS_ATTRIBUTES = (Map<String, Set<String>>) ois.readObject();
+ } catch (Exception e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ } finally {
+ try {
+ serializedAttributesStream.close();
+ } catch (IOException e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ }
+ }
+ }
+
+ public RendererClassVisitor(CompositeInterface compositeInterface) {
+ this.compositeInterface = compositeInterface;
+ renderer = new JavaClass();
+ }
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#endElement(org.richfaces.cdk.templatecompiler.model.AnyElement)
+ */
+ @Override
+ public void endElement(AnyElement anyElement) throws CdkException {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#endElement(org.richfaces.cdk.templatecompiler.model.CdkBodyElement)
+ */
+ @Override
+ public void endElement(CdkBodyElement cdkBodyElement) throws CdkException {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#startElement(org.richfaces.cdk.templatecompiler.model.AnyElement)
+ */
+ @Override
+ public void startElement(AnyElement anyElement) throws CdkException {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#startElement(org.richfaces.cdk.templatecompiler.model.CdkBodyElement)
+ */
+ @Override
+ public void startElement(CdkBodyElement cdkBodyElement) throws CdkException {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#visitElement(org.richfaces.cdk.templatecompiler.model.CdkCallElement)
+ */
+ @Override
+ public void visitElement(CdkCallElement cdkCallElement) throws CdkException {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#visitElement(java.lang.String)
+ */
+ @Override
+ public void visitElement(String child) throws CdkException {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Property changes on: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassVisitor.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererTemplateParser.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererTemplateParser.java 2009-11-05 20:37:23 UTC (rev 15844)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererTemplateParser.java 2009-11-06 00:27:52 UTC (rev 15845)
@@ -72,7 +72,7 @@
}
protected Template parseTemplate(File file) throws CdkException {
- return jaxbBinding.unmarshal(file, null, Template.class);
+ return jaxbBinding.unmarshal(file, "http://richfaces.org/cdk/cdk-template.xsd", Template.class);
}
/*
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/AnyElement.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/AnyElement.java 2009-11-05 20:37:23 UTC (rev 15844)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/AnyElement.java 2009-11-06 00:27:52 UTC (rev 15845)
@@ -29,6 +29,8 @@
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.namespace.QName;
+import org.richfaces.cdk.CdkException;
+
/**
* <p class="changed_added_4_0"></p>
* @author asmirnov(a)exadel.com
@@ -80,4 +82,13 @@
this.attributes = attributes;
}
+ @Override
+ public void beforeVisit(TemplateVisitor visitor) throws CdkException {
+ visitor.startElement(this);
+ }
+
+ @Override
+ public void afterVisit(TemplateVisitor visitor) throws CdkException {
+ visitor.endElement(this);
+ }
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/CdkBodyElement.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/CdkBodyElement.java 2009-11-05 20:37:23 UTC (rev 15844)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/CdkBodyElement.java 2009-11-06 00:27:52 UTC (rev 15845)
@@ -23,11 +23,22 @@
package org.richfaces.cdk.templatecompiler.model;
+import org.richfaces.cdk.CdkException;
+
/**
* <p class="changed_added_4_0"></p>
* @author asmirnov(a)exadel.com
*
*/
public class CdkBodyElement extends ModelFragment {
+ @Override
+ public void beforeVisit(TemplateVisitor visitor) throws CdkException {
+ visitor.startElement(this);
+ }
+
+ @Override
+ public void afterVisit(TemplateVisitor visitor) throws CdkException {
+ visitor.endElement(this);
+ }
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/CdkCallElement.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/CdkCallElement.java 2009-11-05 20:37:23 UTC (rev 15844)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/CdkCallElement.java 2009-11-06 00:27:52 UTC (rev 15845)
@@ -26,13 +26,15 @@
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
+import org.richfaces.cdk.CdkException;
+
/**
* <p class="changed_added_4_0"></p>
* @author asmirnov(a)exadel.com
*
*/
@XmlRootElement(name="call",namespace=Template.CDK_NAMESPACE)
-public class CdkCallElement {
+public class CdkCallElement implements ModelElement {
private String expression;
@@ -55,6 +57,13 @@
public void setExpression(String expression) {
this.expression = expression;
}
+
+ @Override
+ public void visit(TemplateVisitor visitor) throws CdkException {
+
+ visitor.visitElement(this);
+
+ }
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/ElementsHandler.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/ElementsHandler.java 2009-11-05 20:37:23 UTC (rev 15844)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/ElementsHandler.java 2009-11-06 00:27:52 UTC (rev 15845)
@@ -23,6 +23,7 @@
package org.richfaces.cdk.templatecompiler.model;
+import javax.xml.XMLConstants;
import javax.xml.bind.JAXB;
import javax.xml.bind.ValidationEventHandler;
import javax.xml.bind.annotation.DomHandler;
@@ -101,8 +102,8 @@
public ModelElement getElement(DOMResult rt) {
Element domElement = getDomElement(rt);
AnyElement element = JAXB.unmarshal(new DOMSource(domElement), AnyElement.class);
-
- QName name = new QName(domElement.getNamespaceURI(),domElement.getLocalName());
+ String prefix = domElement.getPrefix();
+ QName name = new QName(domElement.getNamespaceURI(),domElement.getLocalName(),null!=prefix?prefix:XMLConstants.DEFAULT_NS_PREFIX);
element.setName(name);
return element;
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/ModelElement.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/ModelElement.java 2009-11-05 20:37:23 UTC (rev 15844)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/ModelElement.java 2009-11-06 00:27:52 UTC (rev 15845)
@@ -5,10 +5,11 @@
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlMixed;
+import org.richfaces.cdk.CdkException;
import org.w3c.dom.Element;
public interface ModelElement {
+ public void visit(TemplateVisitor visitor) throws CdkException;
-
}
\ No newline at end of file
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/ModelFragment.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/ModelFragment.java 2009-11-05 20:37:23 UTC (rev 15844)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/ModelFragment.java 2009-11-06 00:27:52 UTC (rev 15845)
@@ -6,6 +6,8 @@
import javax.xml.bind.annotation.XmlMixed;
import javax.xml.bind.annotation.XmlSeeAlso;
+import org.richfaces.cdk.CdkException;
+
/**
* <p class="changed_added_4_0">All classes that are used in template bodey should be presented
* in the {@link XmlSeeAlso} annotation </p>
@@ -32,4 +34,25 @@
this.children = body;
}
+ @Override
+ public void visit(TemplateVisitor visitor) throws CdkException {
+ beforeVisit(visitor);
+ for (Object child : getChildren()) {
+ if (child instanceof String) {
+ visitor.visitElement((String) child);
+ } else if (child instanceof ModelElement) {
+ ((ModelElement) child).visit(visitor);
+ } else {
+ throw new CdkException("Unknown type of element in renderer template "+child.getClass());
+ }
+ }
+ afterVisit(visitor);
+ }
+
+ public void afterVisit(TemplateVisitor visitor) throws CdkException {
+ }
+
+ public void beforeVisit(TemplateVisitor visitor) throws CdkException {
+ }
+
}
\ No newline at end of file
Added: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/TemplateVisitor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/TemplateVisitor.java (rev 0)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/TemplateVisitor.java 2009-11-06 00:27:52 UTC (rev 15845)
@@ -0,0 +1,47 @@
+/*
+ * $Id$
+ *
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.richfaces.cdk.templatecompiler.model;
+
+import org.richfaces.cdk.CdkException;
+
+/**
+ * <p class="changed_added_4_0"></p>
+ * @author asmirnov(a)exadel.com
+ *
+ */
+public interface TemplateVisitor {
+
+ void visitElement(CdkCallElement cdkCallElement) throws CdkException;
+
+ void visitElement(String child) throws CdkException;
+
+ void startElement(AnyElement anyElement) throws CdkException;
+
+ void endElement(AnyElement anyElement) throws CdkException;
+
+ void startElement(CdkBodyElement cdkBodyElement) throws CdkException;
+
+ void endElement(CdkBodyElement cdkBodyElement) throws CdkException;
+
+}
Property changes on: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/model/TemplateVisitor.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/CdkEntityResolver.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/CdkEntityResolver.java 2009-11-05 20:37:23 UTC (rev 15844)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/CdkEntityResolver.java 2009-11-06 00:27:52 UTC (rev 15845)
@@ -66,16 +66,32 @@
private static final String ATTRIBUTES_PREFIX = "META-INF/cdk/attributes/";
private static final String SYSTEM_PREFIX = "/META-INF/schema";
private static final String URN_SYSTEM = "urn:system:";
- private static final ImmutableMap<String, String> SYSTEM_ENTITIES =
- ImmutableMap.<String, String>builder().put(
- "http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd", URN_SYSTEM + "/web-facesconfig_2_0.xsd").put(
- "http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd", URN_SYSTEM + "/web-facesconfig_1_2.xsd").put(
- "http://java.sun.com/xml/ns/javaee/javaee_5.xsd", URN_SYSTEM + "/javaee_5.xsd").put(
- "http://java.sun.com/xml/ns/javaee/javaee_web_services_1_2.xsd",
- URN_SYSTEM + "/javaee_web_services_1_2.xsd").put(
- "http://java.sun.com/xml/ns/javaee/javaee_web_services_client_1_2.xsd",
- URN_SYSTEM + "/javaee_web_services_client_1_2.xsd").put(
- "http://www.w3.org/2001/03/xml.xsd", URN_SYSTEM + "/xml.xsd").build();
+ private static final ImmutableMap<String, String> SYSTEM_ENTITIES = ImmutableMap
+ .<String, String> builder()
+ .put("http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd",
+ URN_SYSTEM + "/web-facesconfig_2_0.xsd")
+ .put("http://java.sun.com/xml/ns/javaee/web-facesuicomponent_2_0.xsd",
+ URN_SYSTEM + "/web-facesuicomponent_2_0.xsd")
+ .put("http://java.sun.com/xml/ns/javaee/web-partialresponse_2_0.xsd",
+ URN_SYSTEM + "/web-partialresponse_2_0.xsd")
+ .put("http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd",
+ URN_SYSTEM + "/web-facesconfig_1_2.xsd")
+ .put("http://java.sun.com/xml/ns/javaee/javaee_5.xsd",
+ URN_SYSTEM + "/javaee_5.xsd")
+ .put(
+ "http://java.sun.com/xml/ns/javaee/javaee_web_services_1_2.xsd",
+ URN_SYSTEM + "/javaee_web_services_1_2.xsd")
+ .put(
+ "http://java.sun.com/xml/ns/javaee/javaee_web_services_client_1_2.xsd",
+ URN_SYSTEM + "/javaee_web_services_client_1_2.xsd").put(
+ "http://www.w3.org/2001/03/XMLSchema.dtd",
+ URN_SYSTEM + "/XMLSchema.dtd").put(
+ "http://www.w3.org/2001/03/xml.xsd",
+ URN_SYSTEM + "/xml.xsd").put(
+ "http://richfaces.org/cdk/cdk-template.xsd",
+ URN_SYSTEM + "/cdk-template.xsd").put(
+ "http://richfaces.org/cdk/xhtml-el.xsd",
+ URN_SYSTEM + "/xhtml-el.xsd").build();
private final CdkContext context;
Added: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/XMLSchema.dtd
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/XMLSchema.dtd (rev 0)
+++ root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/XMLSchema.dtd 2009-11-06 00:27:52 UTC (rev 15845)
@@ -0,0 +1,402 @@
+<!-- DTD for XML Schemas: Part 1: Structures
+ Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN"
+ Official Location: http://www.w3.org/2001/XMLSchema.dtd -->
+<!-- $Id: XMLSchema.dtd,v 1.3 2006/03/27 17:41:34 rlubke Exp $ -->
+<!-- Note this DTD is NOT normative, or even definitive. --> <!--d-->
+<!-- prose copy in the structures REC is the definitive version --> <!--d-->
+<!-- (which shouldn't differ from this one except for this --> <!--d-->
+<!-- comment and entity expansions, but just in case) --> <!--d-->
+<!-- With the exception of cases with multiple namespace
+ prefixes for the XML Schema namespace, any XML document which is
+ not valid per this DTD given redefinitions in its internal subset of the
+ 'p' and 's' parameter entities below appropriate to its namespace
+ declaration of the XML Schema namespace is almost certainly not
+ a valid schema. -->
+
+<!-- The simpleType element and its constituent parts
+ are defined in XML Schema: Part 2: Datatypes -->
+<!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' >
+
+<!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a
+ schema document to establish a different
+ namespace prefix -->
+<!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must
+ also define %s as the suffix for the appropriate
+ namespace declaration (e.g. :foo) -->
+<!ENTITY % nds 'xmlns%s;'>
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % schema "%p;schema">
+<!ENTITY % complexType "%p;complexType">
+<!ENTITY % complexContent "%p;complexContent">
+<!ENTITY % simpleContent "%p;simpleContent">
+<!ENTITY % extension "%p;extension">
+<!ENTITY % element "%p;element">
+<!ENTITY % unique "%p;unique">
+<!ENTITY % key "%p;key">
+<!ENTITY % keyref "%p;keyref">
+<!ENTITY % selector "%p;selector">
+<!ENTITY % field "%p;field">
+<!ENTITY % group "%p;group">
+<!ENTITY % all "%p;all">
+<!ENTITY % choice "%p;choice">
+<!ENTITY % sequence "%p;sequence">
+<!ENTITY % any "%p;any">
+<!ENTITY % anyAttribute "%p;anyAttribute">
+<!ENTITY % attribute "%p;attribute">
+<!ENTITY % attributeGroup "%p;attributeGroup">
+<!ENTITY % include "%p;include">
+<!ENTITY % import "%p;import">
+<!ENTITY % redefine "%p;redefine">
+<!ENTITY % notation "%p;notation">
+
+<!-- annotation elements -->
+<!ENTITY % annotation "%p;annotation">
+<!ENTITY % appinfo "%p;appinfo">
+<!ENTITY % documentation "%p;documentation">
+
+<!-- Customisation entities for the ATTLIST of each element type.
+ Define one of these if your schema takes advantage of the
+ anyAttribute='##other' in the schema for schemas -->
+
+<!ENTITY % schemaAttrs ''>
+<!ENTITY % complexTypeAttrs ''>
+<!ENTITY % complexContentAttrs ''>
+<!ENTITY % simpleContentAttrs ''>
+<!ENTITY % extensionAttrs ''>
+<!ENTITY % elementAttrs ''>
+<!ENTITY % groupAttrs ''>
+<!ENTITY % allAttrs ''>
+<!ENTITY % choiceAttrs ''>
+<!ENTITY % sequenceAttrs ''>
+<!ENTITY % anyAttrs ''>
+<!ENTITY % anyAttributeAttrs ''>
+<!ENTITY % attributeAttrs ''>
+<!ENTITY % attributeGroupAttrs ''>
+<!ENTITY % uniqueAttrs ''>
+<!ENTITY % keyAttrs ''>
+<!ENTITY % keyrefAttrs ''>
+<!ENTITY % selectorAttrs ''>
+<!ENTITY % fieldAttrs ''>
+<!ENTITY % includeAttrs ''>
+<!ENTITY % importAttrs ''>
+<!ENTITY % redefineAttrs ''>
+<!ENTITY % notationAttrs ''>
+<!ENTITY % annotationAttrs ''>
+<!ENTITY % appinfoAttrs ''>
+<!ENTITY % documentationAttrs ''>
+
+<!ENTITY % complexDerivationSet "CDATA">
+ <!-- #all or space-separated list drawn from derivationChoice -->
+<!ENTITY % blockSet "CDATA">
+ <!-- #all or space-separated list drawn from
+ derivationChoice + 'substitution' -->
+
+<!ENTITY % mgs '%all; | %choice; | %sequence;'>
+<!ENTITY % cs '%choice; | %sequence;'>
+<!ENTITY % formValues '(qualified|unqualified)'>
+
+
+<!ENTITY % attrDecls '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
+
+<!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
+
+<!-- This is used in part2 -->
+<!ENTITY % restriction1 '((%mgs; | %group;)?)'>
+
+%xs-datatypes;
+
+<!-- the duplication below is to produce an unambiguous content model
+ which allows annotation everywhere -->
+<!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
+ ((%simpleType; | %complexType;
+ | %element; | %attribute;
+ | %attributeGroup; | %group;
+ | %notation; ),
+ (%annotation;)*)* )>
+<!ATTLIST %schema;
+ targetNamespace %URIref; #IMPLIED
+ version CDATA #IMPLIED
+ %nds; %URIref; #FIXED 'http://www.w3.org/2001/XMLSchema'
+ xmlns CDATA #IMPLIED
+ finalDefault %complexDerivationSet; ''
+ blockDefault %blockSet; ''
+ id ID #IMPLIED
+ elementFormDefault %formValues; 'unqualified'
+ attributeFormDefault %formValues; 'unqualified'
+ xml:lang CDATA #IMPLIED
+ %schemaAttrs;>
+<!-- Note the xmlns declaration is NOT in the Schema for Schemas,
+ because at the Infoset level where schemas operate,
+ xmlns(:prefix) is NOT an attribute! -->
+<!-- The declaration of xmlns is a convenience for schema authors -->
+
+<!-- The id attribute here and below is for use in external references
+ from non-schemas using simple fragment identifiers.
+ It is NOT used for schema-to-schema reference, internal or
+ external. -->
+
+<!-- a type is a named content type specification which allows attribute
+ declarations-->
+<!-- -->
+
+<!ELEMENT %complexType; ((%annotation;)?,
+ (%simpleContent;|%complexContent;|
+ %particleAndAttrs;))>
+
+<!ATTLIST %complexType;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ abstract %boolean; #IMPLIED
+ final %complexDerivationSet; #IMPLIED
+ block %complexDerivationSet; #IMPLIED
+ mixed (true|false) 'false'
+ %complexTypeAttrs;>
+
+<!-- particleAndAttrs is shorthand for a root type -->
+<!-- mixed is disallowed if simpleContent, overriden if complexContent
+ has one too. -->
+
+<!-- If anyAttribute appears in one or more referenced attributeGroups
+ and/or explicitly, the intersection of the permissions is used -->
+
+<!ELEMENT %complexContent; ((%annotation;)?, (%restriction;|%extension;))>
+<!ATTLIST %complexContent;
+ mixed (true|false) #IMPLIED
+ id ID #IMPLIED
+ %complexContentAttrs;>
+
+<!-- restriction should use the branch defined above, not the simple
+ one from part2; extension should use the full model -->
+
+<!ELEMENT %simpleContent; ((%annotation;)?, (%restriction;|%extension;))>
+<!ATTLIST %simpleContent;
+ id ID #IMPLIED
+ %simpleContentAttrs;>
+
+<!-- restriction should use the simple branch from part2, not the
+ one defined above; extension should have no particle -->
+
+<!ELEMENT %extension; ((%annotation;)?, (%particleAndAttrs;))>
+<!ATTLIST %extension;
+ base %QName; #REQUIRED
+ id ID #IMPLIED
+ %extensionAttrs;>
+
+<!-- an element is declared by either:
+ a name and a type (either nested or referenced via the type attribute)
+ or a ref to an existing element declaration -->
+
+<!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
+ (%unique; | %key; | %keyref;)*)>
+<!-- simpleType or complexType only if no type|ref attribute -->
+<!-- ref not allowed at top level -->
+<!ATTLIST %element;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ type %QName; #IMPLIED
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ nillable %boolean; #IMPLIED
+ substitutionGroup %QName; #IMPLIED
+ abstract %boolean; #IMPLIED
+ final %complexDerivationSet; #IMPLIED
+ block %blockSet; #IMPLIED
+ default CDATA #IMPLIED
+ fixed CDATA #IMPLIED
+ form %formValues; #IMPLIED
+ %elementAttrs;>
+<!-- type and ref are mutually exclusive.
+ name and ref are mutually exclusive, one is required -->
+<!-- In the absence of type AND ref, type defaults to type of
+ substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
+<!-- default and fixed are mutually exclusive -->
+
+<!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
+<!ATTLIST %group;
+ name %NCName; #IMPLIED
+ ref %QName; #IMPLIED
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %groupAttrs;>
+
+<!ELEMENT %all; ((%annotation;)?, (%element;)*)>
+<!ATTLIST %all;
+ minOccurs (1) #IMPLIED
+ maxOccurs (1) #IMPLIED
+ id ID #IMPLIED
+ %allAttrs;>
+
+<!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %choice;
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %choiceAttrs;>
+
+<!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %sequence;
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %sequenceAttrs;>
+
+<!-- an anonymous grouping in a model, or
+ a top-level named group definition, or a reference to same -->
+
+<!-- Note that if order is 'all', group is not allowed inside.
+ If order is 'all' THIS group must be alone (or referenced alone) at
+ the top level of a content model -->
+<!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
+<!-- Should allow minOccurs=0 inside order='all' . . . -->
+
+<!ELEMENT %any; (%annotation;)?>
+<!ATTLIST %any;
+ namespace CDATA '##any'
+ processContents (skip|lax|strict) 'strict'
+ minOccurs %nonNegativeInteger; '1'
+ maxOccurs CDATA '1'
+ id ID #IMPLIED
+ %anyAttrs;>
+
+<!-- namespace is interpreted as follows:
+ ##any - - any non-conflicting WFXML at all
+
+ ##other - - any non-conflicting WFXML from namespace other
+ than targetNamespace
+
+ ##local - - any unqualified non-conflicting WFXML/attribute
+ one or - - any non-conflicting WFXML from
+ more URI the listed namespaces
+ references
+
+ ##targetNamespace ##local may appear in the above list,
+ with the obvious meaning -->
+
+<!ELEMENT %anyAttribute; (%annotation;)?>
+<!ATTLIST %anyAttribute;
+ namespace CDATA '##any'
+ processContents (skip|lax|strict) 'strict'
+ id ID #IMPLIED
+ %anyAttributeAttrs;>
+<!-- namespace is interpreted as for 'any' above -->
+
+<!-- simpleType only if no type|ref attribute -->
+<!-- ref not allowed at top level, name iff at top level -->
+<!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
+<!ATTLIST %attribute;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ type %QName; #IMPLIED
+ use (prohibited|optional|required) #IMPLIED
+ default CDATA #IMPLIED
+ fixed CDATA #IMPLIED
+ form %formValues; #IMPLIED
+ %attributeAttrs;>
+<!-- type and ref are mutually exclusive.
+ name and ref are mutually exclusive, one is required -->
+<!-- default for use is optional when nested, none otherwise -->
+<!-- default and fixed are mutually exclusive -->
+<!-- type attr and simpleType content are mutually exclusive -->
+
+<!-- an attributeGroup is a named collection of attribute decls, or a
+ reference thereto -->
+<!ELEMENT %attributeGroup; ((%annotation;)?,
+ (%attribute; | %attributeGroup;)*,
+ (%anyAttribute;)?) >
+<!ATTLIST %attributeGroup;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ %attributeGroupAttrs;>
+
+<!-- ref iff no content, no name. ref iff not top level -->
+
+<!-- better reference mechanisms -->
+<!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %unique;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ %uniqueAttrs;>
+
+<!ELEMENT %key; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %key;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ %keyAttrs;>
+
+<!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %keyref;
+ name %NCName; #REQUIRED
+ refer %QName; #REQUIRED
+ id ID #IMPLIED
+ %keyrefAttrs;>
+
+<!ELEMENT %selector; ((%annotation;)?)>
+<!ATTLIST %selector;
+ xpath %XPathExpr; #REQUIRED
+ id ID #IMPLIED
+ %selectorAttrs;>
+<!ELEMENT %field; ((%annotation;)?)>
+<!ATTLIST %field;
+ xpath %XPathExpr; #REQUIRED
+ id ID #IMPLIED
+ %fieldAttrs;>
+
+<!-- Schema combination mechanisms -->
+<!ELEMENT %include; (%annotation;)?>
+<!ATTLIST %include;
+ schemaLocation %URIref; #REQUIRED
+ id ID #IMPLIED
+ %includeAttrs;>
+
+<!ELEMENT %import; (%annotation;)?>
+<!ATTLIST %import;
+ namespace %URIref; #IMPLIED
+ schemaLocation %URIref; #IMPLIED
+ id ID #IMPLIED
+ %importAttrs;>
+
+<!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
+ %attributeGroup; | %group;)*>
+<!ATTLIST %redefine;
+ schemaLocation %URIref; #REQUIRED
+ id ID #IMPLIED
+ %redefineAttrs;>
+
+<!ELEMENT %notation; (%annotation;)?>
+<!ATTLIST %notation;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ public CDATA #REQUIRED
+ system %URIref; #IMPLIED
+ %notationAttrs;>
+
+<!-- Annotation is either application information or documentation -->
+<!-- By having these here they are available for datatypes as well
+ as all the structures elements -->
+
+<!ELEMENT %annotation; (%appinfo; | %documentation;)*>
+<!ATTLIST %annotation; %annotationAttrs;>
+
+<!-- User must define annotation elements in internal subset for this
+ to work -->
+<!ELEMENT %appinfo; ANY> <!-- too restrictive -->
+<!ATTLIST %appinfo;
+ source %URIref; #IMPLIED
+ id ID #IMPLIED
+ %appinfoAttrs;>
+<!ELEMENT %documentation; ANY> <!-- too restrictive -->
+<!ATTLIST %documentation;
+ source %URIref; #IMPLIED
+ id ID #IMPLIED
+ xml:lang CDATA #IMPLIED
+ %documentationAttrs;>
+
+<!NOTATION XMLSchemaStructures PUBLIC
+ 'structures' 'http://www.w3.org/2001/XMLSchema.xsd' >
+<!NOTATION XML PUBLIC
+ 'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >
Property changes on: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/XMLSchema.dtd
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/cdk-template.xsd (from rev 15844, root/cdk/trunk/plugins/generator/src/main/xsd/cdk-template.xsd)
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/cdk-template.xsd (rev 0)
+++ root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/cdk-template.xsd 2009-11-06 00:27:52 UTC (rev 15845)
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://richfaces.org/cdk" xmlns="http://richfaces.org/cdk"
+ elementFormDefault="qualified" attributeFormDefault="qualified"
+ xmlns:xhtml="http://richfaces.org/xhtml-el"
+ xmlns:javaee="http://java.sun.com/xml/ns/javaee"
+ >
+ <xs:import schemaLocation="web-facesuicomponent_2_0.xsd" namespace="http://java.sun.com/xml/ns/javaee"/><!--
+ <xs:include schemaLocation="xhtml-el.xsd"/>
+
+ --><xs:simpleType name="elStrictExpression">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="#\{[^\}]+\}" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="elMixedExpression">
+ <xs:restriction base="xs:string">
+ <xs:pattern value=".*#\{[^\}]+\}.*" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="elFreeformExpression">
+ <xs:restriction base="xs:string" />
+ </xs:simpleType>
+
+ <xs:attributeGroup name="core.attrs">
+ <xs:attribute name="passThroughWithExclusions" type="xs:NMTOKENS" />
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="testGroup">
+ <xs:attribute name="test" form="unqualified" use="required" type="elStrictExpression" />
+ </xs:attributeGroup>
+
+ <xs:element name="root">
+ <xs:complexType mixed="true">
+ <xs:choice>
+ <xs:any minOccurs="0" maxOccurs="unbounded" />
+ </xs:choice>
+ <xs:attribute name="class" type="xs:string" form="unqualified" use="required" />
+ <xs:attribute name="superclass" type="xs:string" form="unqualified"/>
+ <xs:attribute name="componentclass" type="xs:string" form="unqualified" use="required" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:group name="structural">
+ <xs:choice>
+ <xs:element name="body">
+ <xs:complexType mixed="true">
+ <xs:choice>
+ <xs:any minOccurs="0" maxOccurs="unbounded" />
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="if" />
+ <xs:element ref="choose" />
+ <xs:element ref="call" />
+ </xs:choice>
+ </xs:group>
+
+
+ <xs:element name="if">
+ <xs:complexType mixed="true">
+ <xs:choice>
+ <xs:any minOccurs="0" maxOccurs="unbounded" />
+ </xs:choice>
+ <xs:attributeGroup ref="testGroup" />
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="choose">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" name="when">
+ <xs:complexType>
+ <xs:choice>
+ <xs:any minOccurs="0"
+ maxOccurs="unbounded">
+ </xs:any>
+ </xs:choice>
+ <xs:attributeGroup ref="testGroup" />
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" name="otherwise">
+ <xs:complexType>
+ <xs:choice>
+ <xs:any minOccurs="0"
+ maxOccurs="unbounded">
+ </xs:any>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="call">
+ <xs:complexType>
+ <xs:attribute name="expression" form="unqualified" />
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
Added: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/datatypes.dtd
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/datatypes.dtd (rev 0)
+++ root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/datatypes.dtd 2009-11-06 00:27:52 UTC (rev 15845)
@@ -0,0 +1,203 @@
+<!--
+ DTD for XML Schemas: Part 2: Datatypes
+ $Id: datatypes.dtd,v 1.3 2006/03/27 17:41:34 rlubke Exp $
+ Note this DTD is NOT normative, or even definitive. - - the
+ prose copy in the datatypes REC is the definitive version
+ (which shouldn't differ from this one except for this comment
+ and entity expansions, but just in case)
+ -->
+
+<!--
+ This DTD cannot be used on its own, it is intended
+ only for incorporation in XMLSchema.dtd, q.v.
+ -->
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % simpleType "%p;simpleType">
+<!ENTITY % restriction "%p;restriction">
+<!ENTITY % list "%p;list">
+<!ENTITY % union "%p;union">
+<!ENTITY % maxExclusive "%p;maxExclusive">
+<!ENTITY % minExclusive "%p;minExclusive">
+<!ENTITY % maxInclusive "%p;maxInclusive">
+<!ENTITY % minInclusive "%p;minInclusive">
+<!ENTITY % totalDigits "%p;totalDigits">
+<!ENTITY % fractionDigits "%p;fractionDigits">
+<!ENTITY % length "%p;length">
+<!ENTITY % minLength "%p;minLength">
+<!ENTITY % maxLength "%p;maxLength">
+<!ENTITY % enumeration "%p;enumeration">
+<!ENTITY % whiteSpace "%p;whiteSpace">
+<!ENTITY % pattern "%p;pattern">
+
+<!--
+ Customisation entities for the ATTLIST of each element
+ type. Define one of these if your schema takes advantage
+ of the anyAttribute='##other' in the schema for schemas
+ -->
+
+<!ENTITY % simpleTypeAttrs "">
+<!ENTITY % restrictionAttrs "">
+<!ENTITY % listAttrs "">
+<!ENTITY % unionAttrs "">
+<!ENTITY % maxExclusiveAttrs "">
+<!ENTITY % minExclusiveAttrs "">
+<!ENTITY % maxInclusiveAttrs "">
+<!ENTITY % minInclusiveAttrs "">
+<!ENTITY % totalDigitsAttrs "">
+<!ENTITY % fractionDigitsAttrs "">
+<!ENTITY % lengthAttrs "">
+<!ENTITY % minLengthAttrs "">
+<!ENTITY % maxLengthAttrs "">
+<!ENTITY % enumerationAttrs "">
+<!ENTITY % whiteSpaceAttrs "">
+<!ENTITY % patternAttrs "">
+
+<!-- Define some entities for informative use as attribute
+ types -->
+<!ENTITY % URIref "CDATA">
+<!ENTITY % XPathExpr "CDATA">
+<!ENTITY % QName "NMTOKEN">
+<!ENTITY % QNames "NMTOKENS">
+<!ENTITY % NCName "NMTOKEN">
+<!ENTITY % nonNegativeInteger "NMTOKEN">
+<!ENTITY % boolean "(true|false)">
+<!ENTITY % simpleDerivationSet "CDATA">
+<!--
+ #all or space-separated list drawn from derivationChoice
+ -->
+
+<!--
+ Note that the use of 'facet' below is less restrictive
+ than is really intended: There should in fact be no
+ more than one of each of minInclusive, minExclusive,
+ maxInclusive, maxExclusive, totalDigits, fractionDigits,
+ length, maxLength, minLength within datatype,
+ and the min- and max- variants of Inclusive and Exclusive
+ are mutually exclusive. On the other hand, pattern and
+ enumeration may repeat.
+ -->
+<!ENTITY % minBound "(%minInclusive; | %minExclusive;)">
+<!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)">
+<!ENTITY % bounds "%minBound; | %maxBound;">
+<!ENTITY % numeric "%totalDigits; | %fractionDigits;">
+<!ENTITY % ordered "%bounds; | %numeric;">
+<!ENTITY % unordered
+ "%pattern; | %enumeration; | %whiteSpace; | %length; |
+ %maxLength; | %minLength;">
+<!ENTITY % facet "%ordered; | %unordered;">
+<!ENTITY % facetAttr
+ "value CDATA #REQUIRED
+ id ID #IMPLIED">
+<!ENTITY % fixedAttr "fixed %boolean; #IMPLIED">
+<!ENTITY % facetModel "(%annotation;)?">
+<!ELEMENT %simpleType;
+ ((%annotation;)?, (%restriction; | %list; | %union;))>
+<!ATTLIST %simpleType;
+ name %NCName; #IMPLIED
+ final %simpleDerivationSet; #IMPLIED
+ id ID #IMPLIED
+ %simpleTypeAttrs;>
+<!-- name is required at top level -->
+<!ELEMENT %restriction; ((%annotation;)?,
+ (%restriction1; |
+ ((%simpleType;)?,(%facet;)*)),
+ (%attrDecls;))>
+<!ATTLIST %restriction;
+ base %QName; #IMPLIED
+ id ID #IMPLIED
+ %restrictionAttrs;>
+<!--
+ base and simpleType child are mutually exclusive,
+ one is required.
+
+ restriction is shared between simpleType and
+ simpleContent and complexContent (in XMLSchema.xsd).
+ restriction1 is for the latter cases, when this
+ is restricting a complex type, as is attrDecls.
+ -->
+<!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)>
+<!ATTLIST %list;
+ itemType %QName; #IMPLIED
+ id ID #IMPLIED
+ %listAttrs;>
+<!--
+ itemType and simpleType child are mutually exclusive,
+ one is required
+ -->
+<!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)>
+<!ATTLIST %union;
+ id ID #IMPLIED
+ memberTypes %QNames; #IMPLIED
+ %unionAttrs;>
+<!--
+ At least one item in memberTypes or one simpleType
+ child is required
+ -->
+
+<!ELEMENT %maxExclusive; %facetModel;>
+<!ATTLIST %maxExclusive;
+ %facetAttr;
+ %fixedAttr;
+ %maxExclusiveAttrs;>
+<!ELEMENT %minExclusive; %facetModel;>
+<!ATTLIST %minExclusive;
+ %facetAttr;
+ %fixedAttr;
+ %minExclusiveAttrs;>
+
+<!ELEMENT %maxInclusive; %facetModel;>
+<!ATTLIST %maxInclusive;
+ %facetAttr;
+ %fixedAttr;
+ %maxInclusiveAttrs;>
+<!ELEMENT %minInclusive; %facetModel;>
+<!ATTLIST %minInclusive;
+ %facetAttr;
+ %fixedAttr;
+ %minInclusiveAttrs;>
+
+<!ELEMENT %totalDigits; %facetModel;>
+<!ATTLIST %totalDigits;
+ %facetAttr;
+ %fixedAttr;
+ %totalDigitsAttrs;>
+<!ELEMENT %fractionDigits; %facetModel;>
+<!ATTLIST %fractionDigits;
+ %facetAttr;
+ %fixedAttr;
+ %fractionDigitsAttrs;>
+
+<!ELEMENT %length; %facetModel;>
+<!ATTLIST %length;
+ %facetAttr;
+ %fixedAttr;
+ %lengthAttrs;>
+<!ELEMENT %minLength; %facetModel;>
+<!ATTLIST %minLength;
+ %facetAttr;
+ %fixedAttr;
+ %minLengthAttrs;>
+<!ELEMENT %maxLength; %facetModel;>
+<!ATTLIST %maxLength;
+ %facetAttr;
+ %fixedAttr;
+ %maxLengthAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %enumeration; %facetModel;>
+<!ATTLIST %enumeration;
+ %facetAttr;
+ %enumerationAttrs;>
+
+<!ELEMENT %whiteSpace; %facetModel;>
+<!ATTLIST %whiteSpace;
+ %facetAttr;
+ %fixedAttr;
+ %whiteSpaceAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %pattern; %facetModel;>
+<!ATTLIST %pattern;
+ %facetAttr;
+ %patternAttrs;>
Property changes on: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/datatypes.dtd
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/web-facelettaglibrary_2_0.xsd
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/web-facelettaglibrary_2_0.xsd (rev 0)
+++ root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/web-facelettaglibrary_2_0.xsd 2009-11-06 00:27:52 UTC (rev 15845)
@@ -0,0 +1,468 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License"). You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt. See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code. If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license." If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above. However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+<xsd:schema
+ targetNamespace="http://java.sun.com/xml/ns/javaee"
+ xmlns:javaee="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xml="http://www.w3.org/XML/1998/namespace"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ version="2.0">
+ <xsd:include schemaLocation="javaee_5.xsd"/>
+ <xsd:element name="facelet-taglib" type="javaee:facelet-taglibType">
+ <xsd:unique name="facelet-taglib-tagname-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ tag-names must be unique within a document.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:tag"/>
+ <xsd:field xpath="javaee:tag-name"/>
+ </xsd:unique>
+ <xsd:unique name="faces-config-behavior-ID-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Behavior IDs must be unique within a document.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:behavior"/>
+ <xsd:field xpath="javaee:behavior-id"/>
+ </xsd:unique>
+ <xsd:unique name="faces-config-converter-ID-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Converter IDs must be unique within a document.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:converter"/>
+ <xsd:field xpath="javaee:converter-id"/>
+ </xsd:unique>
+ <xsd:unique name="faces-config-validator-ID-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Validator IDs must be unique within a document.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:validator"/>
+ <xsd:field xpath="javaee:validator-id"/>
+ </xsd:unique>
+ </xsd:element>
+ <xsd:complexType name="facelet-taglibType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The top level XML element in a facelet tag library XML file.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:group ref="javaee:descriptionGroup"/>
+ <xsd:choice>
+ <xsd:element name="library-class"
+ type="javaee:fully-qualified-classType"/>
+ <xsd:sequence>
+ <xsd:element name="namespace" type="javaee:string"/>
+ <xsd:element minOccurs="0" maxOccurs="1"
+ name="composite-library-name"
+ type="javaee:fully-qualified-classType"/>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="tag"
+ type="javaee:facelet-taglib-tagType"/>
+ <xsd:element name="function"
+ type="javaee:facelet-taglib-functionType"/>
+
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:choice>
+ <xsd:element name="taglib-extension"
+ type="javaee:facelet-taglib-extensionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ <xsd:attribute name="version"
+ type="javaee:facelet-taglib-versionType"
+ use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="facelet-taglib-extensionType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Extension element for facelet-taglib. It may contain
+ implementation specific content.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence>
+ <xsd:any namespace="##any"
+ processContents="lax"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="facelet-taglib-tagType">
+ <xsd:annotation>
+ <xsd:documentation>
+ If the tag library XML file contains individual tag
+ declarations rather than pointing to a library-class or a
+ declaring a composite-library name, the individual tags are
+ enclosed in tag elements.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:group ref="javaee:descriptionGroup"/>
+ <xsd:element name="tag-name"
+ type="javaee:facelet-taglib-canonical-nameType"/>
+ <xsd:choice>
+ <xsd:element name="handler-class"
+ type="javaee:fully-qualified-classType"/>
+ <xsd:element name="behavior"
+ type="javaee:facelet-taglib-tag-behaviorType"/>
+ <xsd:element name="component"
+ type="javaee:facelet-taglib-tag-componentType"/>
+ <xsd:element name="converter"
+ type="javaee:facelet-taglib-tag-converterType"/>
+ <xsd:element name="validator"
+ type="javaee:facelet-taglib-tag-validatorType"/>
+ <xsd:element name="source" type="javaee:string"/>
+ </xsd:choice>
+ <xsd:element name="attribute"
+ type="javaee:facelet-taglib-tag-attributeType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="tag-extension"
+ type="javaee:facelet-taglib-tag-extensionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+
+ <xsd:complexType name="facelet-taglib-tag-attributeType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The attribute element defines an attribute for the nesting
+ tag. The attribute element may have several subelements
+ defining:
+
+ description a description of the attribute
+
+ name the name of the attribute
+
+ required whether the attribute is required or
+ optional
+
+ type the type of the attribute
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence>
+ <xsd:group ref="javaee:descriptionGroup"/>
+ <xsd:element name="name"
+ type="javaee:xsdNMTOKENType"/>
+ <xsd:element name="required"
+ type="javaee:generic-booleanType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Defines if the nesting attribute is required or
+ optional.
+
+ If not present then the default is "false", i.e
+ the attribute is optional.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:choice>
+ <xsd:element name="type"
+ type="javaee:fully-qualified-classType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Defines the Java type of the attributes
+ value. If this element is omitted, the
+ expected type is assumed to be
+ "java.lang.Object".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="method-signature"
+ type="javaee:string"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Defines the method signature for a MethodExpression-
+ enabled attribute.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="facelet-taglib-tag-extensionType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Extension element for tag It may contain
+ implementation specific content.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence>
+ <xsd:any namespace="##any"
+ processContents="lax"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="facelet-taglib-functionType">
+ <xsd:annotation>
+ <xsd:documentation>
+ If the tag library XML file contains individual function
+ declarations rather than pointing to a library-class or a
+ declaring a composite-library name, the individual functions are
+ enclosed in function elements.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:group ref="javaee:descriptionGroup"/>
+ <xsd:element name="function-name" type="javaee:string"/>
+ <xsd:element name="function-class"
+ type="javaee:fully-qualified-classType"/>
+ <xsd:element name="function-signature" type="javaee:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="facelet-taglib-tag-behaviorType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Within a tag element, the behavior element encapsulates
+ information specific to a JSF Behavior.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:group ref="javaee:descriptionGroup"/>
+ <xsd:element minOccurs="1" maxOccurs="1"
+ name="behavior-id" type="javaee:string"/>
+ <xsd:element minOccurs="0" maxOccurs="1"
+ name="handler-class"
+ type="javaee:fully-qualified-classType"/>
+ <xsd:element name="behavior-extension"
+ type="javaee:facelet-taglib-tag-behavior-extensionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="facelet-taglib-tag-behavior-extensionType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Extension element for behavior. It may contain
+ implementation specific content.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence>
+ <xsd:any namespace="##any"
+ processContents="lax"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+ <xsd:complexType name="facelet-taglib-tag-componentType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Within a tag element, the component element encapsulates
+ information specific to a JSF UIComponent.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:group ref="javaee:descriptionGroup"/>
+ <xsd:element name="component-type" type="javaee:string"/>
+ <xsd:element minOccurs="0" maxOccurs="1"
+ name="renderer-type" type="javaee:string"/>
+ <xsd:element minOccurs="0" maxOccurs="1"
+ name="handler-class"
+ type="javaee:fully-qualified-classType"/>
+ <xsd:element name="component-extension"
+ type="javaee:facelet-taglib-tag-component-extensionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="facelet-taglib-tag-component-extensionType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Extension element for component It may contain
+ implementation specific content.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence>
+ <xsd:any namespace="##any"
+ processContents="lax"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="facelet-taglib-tag-converterType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Within a tag element, the converter element encapsulates
+ information specific to a JSF Converter.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:group ref="javaee:descriptionGroup"/>
+ <xsd:element minOccurs="1" maxOccurs="1"
+ name="converter-id" type="javaee:string"/>
+ <xsd:element minOccurs="0" maxOccurs="1"
+ name="handler-class"
+ type="javaee:fully-qualified-classType"/>
+ <xsd:element name="converter-extension"
+ type="javaee:facelet-taglib-tag-converter-extensionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="facelet-taglib-tag-converter-extensionType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Extension element for converter It may contain
+ implementation specific content.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence>
+ <xsd:any namespace="##any"
+ processContents="lax"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="facelet-taglib-tag-validatorType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Within a tag element, the validator element encapsulates
+ information specific to a JSF Validator.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:group ref="javaee:descriptionGroup"/>
+ <xsd:element minOccurs="1" maxOccurs="1"
+ name="validator-id" type="javaee:string"/>
+ <xsd:element minOccurs="0" maxOccurs="1"
+ name="handler-class"
+ type="javaee:fully-qualified-classType"/>
+ <xsd:element name="validator-extension"
+ type="javaee:facelet-taglib-tag-validator-extensionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="facelet-taglib-tag-validator-extensionType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Extension element for validator It may contain
+ implementation specific content.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence>
+ <xsd:any namespace="##any"
+ processContents="lax"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <!-- **************************************************** -->
+ <xsd:simpleType name="facelet-taglib-versionType">
+ <xsd:annotation>
+ <xsd:documentation>
+ This type contains the recognized versions of
+ facelet-taglib supported.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="2.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="facelet-taglib-canonical-nameType">
+
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Defines the canonical name of a tag or attribute being
+ defined.
+
+ The name must conform to the lexical rules for an NCName
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:NCName">
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+</xsd:schema>
Property changes on: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/web-facelettaglibrary_2_0.xsd
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/xhtml-el.xsd (from rev 15844, root/cdk/trunk/plugins/generator/src/main/xsd/xhtml-el.xsd)
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/xhtml-el.xsd (rev 0)
+++ root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/xhtml-el.xsd 2009-11-06 00:27:52 UTC (rev 15845)
@@ -0,0 +1,3389 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema version="1.0" xml:lang="en"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://richfaces.org/xhtml-el"
+ xmlns="http://richfaces.org/xhtml-el" xmlns:xml="http://www.w3.org/XML/1998/namespace"
+ elementFormDefault="qualified" xmlns:cdk="http://richfaces.org/cdk">
+
+ <xs:import schemaLocation="cdk-template.xsd" namespace="http://richfaces.org/cdk" />
+
+ <xs:annotation>
+ <xs:documentation>
+ XHTML 1.0 (Second Edition) Transitional in XML
+ Schema
+
+ This is the same as HTML 4 Transitional except for
+ changes due
+ to the differences between XML and SGML.
+
+ Namespace =
+ http://www.w3.org/1999/xhtml
+
+ For further information, see:
+ http://www.w3.org/TR/xhtml1
+
+ Copyright (c) 1998-2002 W3C (MIT, INRIA,
+ Keio),
+ All Rights Reserved.
+
+ The DTD version is identified by the PUBLIC
+ and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD XHTML 1.0
+ Transitional//EN"
+ SYSTEM
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+
+ $Id:
+ xhtml1-transitional.xsd,v 1.5 2002/08/28 09:53:29 mimasa Exp $
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/xml.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ ================ Character mnemonic entities
+ =========================
+
+ XHTML entity sets are identified by the
+ PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//ENTITIES Latin 1 for
+ XHTML//EN"
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent"
+
+ PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+ SYSTEM
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent"
+
+ PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ SYSTEM
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent"
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>
+ ================== Imported Names
+ ====================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="ContentType">
+ <xs:annotation>
+ <xs:documentation>
+ media type, as per [RFC2045]
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="ContentTypes">
+ <xs:annotation>
+ <xs:documentation>
+ comma-separated list of media types, as per
+ [RFC2045]
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="Charset">
+ <xs:annotation>
+ <xs:documentation>
+ a character encoding, as per [RFC2045]
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="Charsets">
+ <xs:annotation>
+ <xs:documentation>
+ a space separated list of character encodings, as
+ per [RFC2045]
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="LanguageCode">
+ <xs:annotation>
+ <xs:documentation>
+ a language code, as per [RFC3066]
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="xs:language cdk:elMixedExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="Character">
+ <xs:annotation>
+ <xs:documentation>
+ a single character, as per section 2.2 of [XML]
+ </xs:documentation>
+ </xs:annotation>
+ <!-- TODO test -->
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:length value="1" fixed="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="simpleType.Number">
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:pattern value="[0-9]+" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="Number">
+ <xs:annotation>
+ <xs:documentation>
+ one or more digits
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="simpleType.Number cdk:elMixedExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="tabindexNumber">
+ <xs:annotation>
+ <xs:documentation>
+ tabindex attribute specifies the position of the
+ current element
+ in the tabbing order for the current document. This
+ value must be
+ a number between 0 and 32767. User agents should ignore
+ leading
+ zeros.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="simpleType.Number">
+ <xs:minInclusive value="0" />
+ <xs:maxInclusive value="32767" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="LinkTypes">
+ <xs:annotation>
+ <xs:documentation>
+ space-separated list of link types
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="xs:NMTOKENS cdk:elMixedExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="MediaDesc">
+ <xs:annotation>
+ <xs:documentation>
+ single or comma-separated list of media descriptors
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[^,]+(,\s*[^,]+)*" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="URI">
+ <xs:annotation>
+ <xs:documentation>
+ a Uniform Resource Identifier, see [RFC2396]
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="xs:anyURI cdk:elMixedExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="UriList">
+ <xs:annotation>
+ <xs:documentation>
+ a space separated list of Uniform Resource
+ Identifiers
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="Datetime">
+ <xs:annotation>
+ <xs:documentation>
+ date and time information. ISO date format
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="xs:dateTime cdk:elMixedExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="Script">
+ <xs:annotation>
+ <xs:documentation>
+ script expression
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="StyleSheet">
+ <xs:annotation>
+ <xs:documentation>
+ style sheet data
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="Text">
+ <xs:annotation>
+ <xs:documentation>
+ used for titles etc.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+
+ <xs:simpleType name="FrameTarget">
+ <xs:annotation>
+ <xs:documentation>
+ render in this frame
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:pattern value="_(blank|self|parent|top)|[A-Za-z]\c*" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="Length">
+ <xs:annotation>
+ <xs:documentation>
+ nn for pixels or nn% for percentage length
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="MultiLength">
+ <xs:annotation>
+ <xs:documentation>
+ pixel, percentage, or relative
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)|[1-9]?(\d+)?\*" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="Pixels">
+ <xs:annotation>
+ <xs:documentation>
+ integer representing length in pixels
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="xs:nonNegativeInteger cdk:elMixedExpression" />
+ </xs:simpleType>
+
+ <xs:annotation>
+ <xs:documentation>
+ these are used for image maps
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="Shape">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="rect" />
+ <xs:enumeration value="circle" />
+ <xs:enumeration value="poly" />
+ <xs:enumeration value="default" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="Coords">
+ <xs:annotation>
+ <xs:documentation>
+ comma separated list of lengths
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)(,\s*[-+]?(\d+|\d+(\.\d+)?%))*" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="ImgAlign">
+ <xs:annotation>
+ <xs:documentation>
+ used for object, applet, img, input and iframe
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top" />
+ <xs:enumeration value="middle" />
+ <xs:enumeration value="bottom" />
+ <xs:enumeration value="left" />
+ <xs:enumeration value="right" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="Color">
+ <xs:annotation>
+ <xs:documentation>
+ a color using sRGB: #RRGGBB as Hex values
+
+ There are
+ also 16 widely known color names with their sRGB values:
+
+ Black =
+ #000000 Green = #008000
+ Silver = #C0C0C0 Lime = #00FF00
+ Gray = #808080
+ Olive = #808000
+ White = #FFFFFF Yellow = #FFFF00
+ Maroon = #800000 Navy
+ = #000080
+ Red = #FF0000 Blue = #0000FF
+ Purple = #800080 Teal = #008080
+ Fuchsia= #FF00FF Aqua = #00FFFF
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Za-z]+|#[0-9A-Fa-f]{3}|#[0-9A-Fa-f]{6}" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <!-- TODO: add constraints -->
+ <xs:simpleType name="ID">
+ <xs:union memberTypes="xs:ID cdk:elMixedExpression" />
+ </xs:simpleType>
+ <xs:simpleType name="IDREF">
+ <xs:union memberTypes="xs:IDREF cdk:elMixedExpression" />
+ </xs:simpleType>
+ <xs:simpleType name="IDREFS">
+ <xs:union memberTypes="xs:IDREFS cdk:elMixedExpression" />
+ </xs:simpleType>
+ <xs:simpleType name="NMTOKEN">
+ <xs:union memberTypes="xs:NMTOKEN cdk:elMixedExpression" />
+ </xs:simpleType>
+ <xs:simpleType name="NMTOKENS">
+ <xs:union memberTypes="xs:NMTOKENS cdk:elMixedExpression" />
+ </xs:simpleType>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Generic Attributes
+ ===============================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attributeGroup name="coreattrs">
+ <xs:annotation>
+ <xs:documentation>
+ core attributes common to most elements
+ id
+ document-wide unique id
+ class space separated list of classes
+ style
+ associated style info
+ title advisory title/amplification
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="id" type="ID" />
+ <xs:attribute name="class" type="NMTOKENS" />
+ <xs:attribute name="style" type="StyleSheet" />
+ <xs:attribute name="title" type="Text" />
+ </xs:attributeGroup>
+
+ <xs:simpleType name="simpleType.dir">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ltr" />
+ <xs:enumeration value="rtl" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:attributeGroup name="i18n">
+ <xs:annotation>
+ <xs:documentation>
+ internationalization attributes
+ lang language code
+ (backwards compatible)
+ xml:lang language code (as per XML 1.0 spec)
+ dir direction for weak/neutral text
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="lang" type="LanguageCode" />
+
+ <!-- TODO: xml:lang can be made EL -->
+ <xs:attribute ref="xml:lang" />
+ <xs:attribute name="dir">
+ <xs:simpleType>
+ <xs:union memberTypes="simpleType.dir cdk:elMixedExpression" />
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="events">
+ <xs:annotation>
+ <xs:documentation>
+ attributes for common UI events
+ onclick a pointer
+ button was clicked
+ ondblclick a pointer button was double clicked
+ onmousedown a pointer button was pressed down
+ onmouseup a pointer
+ button was released
+ onmousemove a pointer was moved onto the element
+ onmouseout a pointer was moved away from the element
+ onkeypress a key
+ was pressed and released
+ onkeydown a key was pressed down
+ onkeyup a
+ key was released
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="onclick" type="Script" />
+ <xs:attribute name="ondblclick" type="Script" />
+ <xs:attribute name="onmousedown" type="Script" />
+ <xs:attribute name="onmouseup" type="Script" />
+ <xs:attribute name="onmouseover" type="Script" />
+ <xs:attribute name="onmousemove" type="Script" />
+ <xs:attribute name="onmouseout" type="Script" />
+ <xs:attribute name="onkeypress" type="Script" />
+ <xs:attribute name="onkeydown" type="Script" />
+ <xs:attribute name="onkeyup" type="Script" />
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="focus">
+ <xs:annotation>
+ <xs:documentation>
+ attributes for elements that can get the focus
+ accesskey accessibility key character
+ tabindex position in tabbing
+ order
+ onfocus the element got the focus
+ onblur the element lost the
+ focus
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="accesskey" type="Character" />
+ <xs:attribute name="tabindex" type="tabindexNumber" />
+ <xs:attribute name="onfocus" type="Script" />
+ <xs:attribute name="onblur" type="Script" />
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="attrs">
+ <xs:attributeGroup ref="coreattrs" />
+ <xs:attributeGroup ref="i18n" />
+ <xs:attributeGroup ref="events" />
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="TextAlign">
+ <xs:annotation>
+ <xs:documentation>
+ text alignment for p, div, h1-h6. The default is
+ align="left" for ltr headings, "right" for rtl
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left" />
+ <xs:enumeration value="center" />
+ <xs:enumeration value="right" />
+ <xs:enumeration value="justify" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Text Elements
+ ====================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:group name="special.extra">
+ <xs:choice>
+ <xs:element ref="object" />
+ <xs:element ref="applet" />
+ <xs:element ref="img" />
+ <xs:element ref="map" />
+ <xs:element ref="iframe" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="special.basic">
+ <xs:choice>
+ <xs:element ref="br" />
+ <xs:element ref="span" />
+ <xs:element ref="bdo" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="special">
+ <xs:choice>
+ <xs:group ref="special.basic" />
+ <xs:group ref="special.extra" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="fontstyle.extra">
+ <xs:choice>
+ <xs:element ref="big" />
+ <xs:element ref="small" />
+ <xs:element ref="font" />
+ <xs:element ref="basefont" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="fontstyle.basic">
+ <xs:choice>
+ <xs:element ref="tt" />
+ <xs:element ref="i" />
+ <xs:element ref="b" />
+ <xs:element ref="u" />
+ <xs:element ref="s" />
+ <xs:element ref="strike" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="fontstyle">
+ <xs:choice>
+ <xs:group ref="fontstyle.basic" />
+ <xs:group ref="fontstyle.extra" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="phrase.extra">
+ <xs:choice>
+ <xs:element ref="sub" />
+ <xs:element ref="sup" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="phrase.basic">
+ <xs:choice>
+ <xs:element ref="em" />
+ <xs:element ref="strong" />
+ <xs:element ref="dfn" />
+ <xs:element ref="code" />
+ <xs:element ref="q" />
+ <xs:element ref="samp" />
+ <xs:element ref="kbd" />
+ <xs:element ref="var" />
+ <xs:element ref="cite" />
+ <xs:element ref="abbr" />
+ <xs:element ref="acronym" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="phrase">
+ <xs:choice>
+ <xs:group ref="phrase.basic" />
+ <xs:group ref="phrase.extra" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="inline.forms">
+ <xs:choice>
+ <xs:element ref="input" />
+ <xs:element ref="select" />
+ <xs:element ref="textarea" />
+ <xs:element ref="label" />
+ <xs:element ref="button" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="misc.inline">
+ <xs:annotation>
+ <xs:documentation>
+ these can only occur at block level
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:group ref="cdk:structural" />
+ <xs:element ref="ins" />
+ <xs:element ref="del" />
+ <xs:element ref="script" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="misc">
+ <xs:annotation>
+ <xs:documentation>
+ these can only occur at block level
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:group ref="misc.elements" />
+ <xs:group ref="misc.inline" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="misc.elements">
+ <xs:choice>
+ <xs:element ref="noscript" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="inline">
+ <xs:choice>
+ <xs:group ref="inline.elements" />
+ <xs:group ref="special" />
+ <xs:group ref="fontstyle" />
+ <xs:group ref="phrase" />
+ <xs:group ref="inline.forms" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="inline.elements">
+ <xs:choice>
+ <xs:element ref="a" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="Inline" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ "Inline" covers inline or "text-level" element
+ </xs:documentation>
+ </xs:annotation>
+ <xs:group ref="Inline.content" />
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="Inline.content">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="inline" />
+ <xs:group ref="misc.inline" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:annotation>
+ <xs:documentation>
+ ================== Block level elements
+ ==============================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:group name="heading">
+ <xs:choice>
+ <xs:element ref="h1" />
+ <xs:element ref="h2" />
+ <xs:element ref="h3" />
+ <xs:element ref="h4" />
+ <xs:element ref="h5" />
+ <xs:element ref="h6" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="lists">
+ <xs:choice>
+ <xs:element ref="ul" />
+ <xs:element ref="ol" />
+ <xs:element ref="dl" />
+ <xs:element ref="menu" />
+ <xs:element ref="dir" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="blocktext">
+ <xs:choice>
+ <xs:element ref="pre" />
+ <xs:element ref="hr" />
+ <xs:element ref="blockquote" />
+ <xs:element ref="address" />
+ <xs:element ref="center" />
+ <xs:element ref="noframes" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="block">
+ <xs:choice>
+ <xs:group ref="block.children" />
+ <xs:group ref="heading" />
+ <xs:group ref="lists" />
+ <xs:group ref="blocktext" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="block.children">
+ <xs:choice>
+ <xs:element ref="p" />
+ <xs:element ref="div" />
+ <xs:element ref="isindex" />
+ <xs:element ref="fieldset" />
+ <xs:element ref="table" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="Flow" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ "Flow" mixes block and inline and is used for list
+ items etc.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:group ref="Flow.children" />
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="Flow.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="block" />
+ <xs:group ref="form.element.group" />
+ <xs:group ref="inline" />
+ <xs:group ref="misc" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="form.element.group">
+ <xs:choice>
+ <xs:element ref="form" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:annotation>
+ <xs:documentation>
+ ================== Content models for exclusions
+ =====================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType name="a.content" mixed="true">
+ <xs:group ref="a.children" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attributeGroup ref="focus"></xs:attributeGroup>
+ <xs:attribute name="charset" type="Charset"></xs:attribute>
+ <xs:attribute name="type" type="ContentType"></xs:attribute>
+ <xs:attribute name="name" type="NMTOKEN"></xs:attribute>
+ <xs:attribute name="href" type="URI"></xs:attribute>
+ <xs:attribute name="hreflang" type="LanguageCode"></xs:attribute>
+ <xs:attribute name="rel" type="LinkTypes"></xs:attribute>
+ <xs:attribute name="rev" type="LinkTypes"></xs:attribute>
+ <xs:attribute default="rect" name="shape" type="Shape"></xs:attribute>
+ <xs:attribute name="coords" type="Coords"></xs:attribute>
+ <xs:attribute name="target" type="FrameTarget"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="a.children">
+ <xs:choice>
+ <xs:group ref="special"></xs:group>
+ <xs:group ref="fontstyle"></xs:group>
+ <xs:group ref="phrase"></xs:group>
+ <xs:group ref="inline.forms"></xs:group>
+ <xs:group ref="misc.inline"></xs:group>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="pre.content" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ pre uses "Inline" excluding img, object, applet,
+ big, small,
+ font, or basefont
+ </xs:documentation>
+ </xs:annotation>
+ <xs:group ref="pre.children" />
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="pre.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="a.element.group" />
+ <xs:group ref="special.basic" />
+ <xs:group ref="fontstyle.basic" />
+ <xs:group ref="phrase.basic" />
+ <xs:group ref="inline.forms" />
+ <xs:group ref="misc.inline" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="a.element.group">
+ <xs:choice>
+ <xs:element ref="a" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="form.content" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ form uses "Flow" excluding form
+ </xs:documentation>
+ </xs:annotation>
+ <xs:group ref="form.children" />
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="form.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="block" />
+ <xs:group ref="inline" />
+ <xs:group ref="misc" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="button.content" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ button uses "Flow" but excludes a, form, form
+ controls, iframe
+ </xs:documentation>
+ </xs:annotation>
+ <xs:group ref="button.children" />
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="button.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="button.children.elements" />
+ <xs:group ref="heading" />
+ <xs:group ref="lists" />
+ <xs:group ref="blocktext" />
+ <xs:group ref="fontstyle" />
+ <xs:group ref="phrase" />
+ <xs:group ref="misc" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="button.children.elements">
+ <xs:choice>
+ <xs:element ref="p" />
+ <xs:element ref="div" />
+ <xs:element ref="table" />
+ <xs:element ref="br" />
+ <xs:element ref="span" />
+ <xs:element ref="bdo" />
+ <xs:element ref="object" />
+ <xs:element ref="applet" />
+ <xs:element ref="img" />
+ <xs:element ref="map" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:annotation>
+ <xs:documentation>
+ ================ Document Structure
+ ==================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="html" type="html.content">
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ ================ Document Head
+ =======================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:group name="head.misc">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:element ref="script" />
+ <xs:element ref="style" />
+ <xs:element ref="meta" />
+ <xs:element ref="link" />
+ <xs:element ref="object" />
+ <xs:element ref="isindex" />
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:element name="head" type="head.content">
+ <xs:annotation>
+ <xs:documentation>
+ content model is "head.misc" combined with a single
+ title and an optional base element in any order
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="title" type="title.content">
+ <xs:annotation>
+ <xs:documentation>
+ The title element is not considered part of the
+ flow of text.
+ It should be displayed, for example as the page header
+ or
+ window title. Exactly one title is required per document.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="base" type="base.content">
+ <xs:annotation>
+ <xs:documentation>
+ document base URI
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="meta" type="meta.content">
+ <xs:annotation>
+ <xs:documentation>
+ generic metainformation
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="link" type="link.content">
+ <xs:annotation>
+ <xs:documentation>
+ Relationship values can be used in principle:
+
+ a) for
+ document specific toolbars/menus when used
+ with the link element in
+ document head e.g.
+ start, contents, previous, next, index, end, help
+ b) to link to a separate style sheet (rel="stylesheet")
+ c) to make a
+ link to a script (rel="script")
+ d) by stylesheets to control how
+ collections of
+ html nodes are rendered into printed documents
+ e) to
+ make a link to a printable version of this document
+ e.g. a PostScript
+ or PDF version (rel="alternate" media="print")
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="style" type="style.content">
+ <xs:annotation>
+ <xs:documentation>
+ style info, which may include CDATA sections
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="script" type="script.content">
+ <xs:annotation>
+ <xs:documentation>
+ script statements, which may include CDATA sections
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="noscript">
+ <xs:annotation>
+ <xs:documentation>
+ alternate content container for non script-based
+ rendering
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ ======================= Frames
+ =======================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="iframe">
+ <xs:annotation>
+ <xs:documentation>
+ inline subwindow
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="coreattrs" />
+ <xs:attribute name="longdesc" type="URI" />
+ <xs:attribute name="name" type="NMTOKEN" />
+ <xs:attribute name="src" type="URI" />
+ <xs:attribute name="frameborder" default="1">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="1" />
+ <xs:enumeration value="0" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="marginwidth" type="Pixels" />
+ <xs:attribute name="marginheight" type="Pixels" />
+ <xs:attribute name="scrolling" default="auto">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="yes" />
+ <xs:enumeration value="no" />
+ <xs:enumeration value="auto" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="align" type="ImgAlign" />
+ <xs:attribute name="height" type="Length" />
+ <xs:attribute name="width" type="Length" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="noframes">
+ <xs:annotation>
+ <xs:documentation>
+ alternate content container for non frame-based
+ rendering
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Document Body
+ ====================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="body">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="onload" type="Script" />
+ <xs:attribute name="onunload" type="Script" />
+ <xs:attribute name="background" type="URI" />
+ <xs:attribute name="bgcolor" type="Color" />
+ <xs:attribute name="text" type="Color" />
+ <xs:attribute name="link" type="Color" />
+ <xs:attribute name="vlink" type="Color" />
+ <xs:attribute name="alink" type="Color" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="div">
+ <xs:annotation>
+ <xs:documentation>
+ generic language/style container
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attributeGroup ref="TextAlign" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Paragraphs
+ =======================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="p">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attributeGroup ref="TextAlign" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Headings
+ =========================================
+
+ There are six levels of
+ headings from h1 (the most important)
+ to h6 (the least important).
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="h1">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attributeGroup ref="TextAlign" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="h2">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attributeGroup ref="TextAlign" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="h3">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attributeGroup ref="TextAlign" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="h4">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attributeGroup ref="TextAlign" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="h5">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attributeGroup ref="TextAlign" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="h6">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attributeGroup ref="TextAlign" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Lists
+ ============================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="ULStyle">
+ <xs:annotation>
+ <xs:documentation>
+ Unordered list bullet styles
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="disc" />
+ <xs:enumeration value="square" />
+ <xs:enumeration value="circle" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:attribute name="compact">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="compact" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:element name="ul" type="ul.content">
+ <xs:annotation>
+ <xs:documentation>
+ Unordered list
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:simpleType name="OLStyle">
+ <xs:annotation>
+ <xs:documentation>
+ Ordered list numbering style
+
+ 1 arabic numbers 1, 2,
+ 3, ...
+ a lower alpha a, b, c, ...
+ A upper alpha A, B, C, ...
+ i lower
+ roman i, ii, iii, ...
+ I upper roman I, II, III, ...
+
+ The style is
+ applied to the sequence number which by default
+ is reset to 1 for the
+ first list item in an ordered list.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+
+ <xs:element name="ol" type="ol.content">
+ <xs:annotation>
+ <xs:documentation>
+ Ordered (numbered) list
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="menu" type="menu.content">
+ <xs:annotation>
+ <xs:documentation>
+ single column list (DEPRECATED)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="dir" type="dir.content">
+ <xs:annotation>
+ <xs:documentation>
+ multiple column list (DEPRECATED)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:simpleType name="LIStyle">
+ <xs:annotation>
+ <xs:documentation>
+ LIStyle is constrained to: "(ULStyle|OLStyle)"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+
+ <xs:element name="li">
+ <xs:annotation>
+ <xs:documentation>
+ list item
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="type" type="LIStyle" />
+ <xs:attribute name="value" type="Number" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ definition lists - dt for term, dd for its
+ definition
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="dl" type="dl.content" />
+
+ <xs:element name="dt">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="dd">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Address
+ ==========================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="address" type="address.content">
+ <xs:annotation>
+ <xs:documentation>
+ information on author
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Horizontal Rule
+ ==================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="hr" type="hr.content">
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Preformatted Text
+ ================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="pre">
+ <xs:annotation>
+ <xs:documentation>
+ content is "Inline" excluding
+ "img|object|applet|big|small|sub|sup|font|basefont"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="pre.content">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="width" type="Number" />
+ <xs:attribute ref="xml:space" fixed="preserve" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Block-like Quotes
+ ================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="blockquote">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="cite" type="URI" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Text alignment
+ ===================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="center">
+ <xs:annotation>
+ <xs:documentation>
+ center content
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Inserted/Deleted Text
+ ============================
+
+ ins/del are allowed in block and inline
+ content, but its
+ inappropriate to include block content within an ins
+ element
+ occurring in inline content.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="ins">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="cite" type="URI" />
+ <xs:attribute name="datetime" type="Datetime" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="del">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="cite" type="URI" />
+ <xs:attribute name="datetime" type="Datetime" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ ================== The Anchor Element
+ ================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="a" type="a.content">
+ <xs:annotation>
+ <xs:documentation>
+ content is "Inline" except that anchors shouldn't
+ be nested
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ ===================== Inline Elements
+ ================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="span">
+ <xs:annotation>
+ <xs:documentation>
+ generic language/style container
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="bdo">
+ <xs:annotation>
+ <xs:documentation>
+ I18N BiDi over-ride
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="coreattrs" />
+ <xs:attributeGroup ref="events" />
+ <xs:attribute name="lang" type="LanguageCode" />
+ <xs:attribute ref="xml:lang" />
+ <xs:attribute name="dir" use="required">
+ <xs:simpleType>
+ <xs:union memberTypes="simpleType.dir cdk:elMixedExpression" />
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="br" type="br.content">
+ <xs:annotation>
+ <xs:documentation>
+ forced line break
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="em">
+ <xs:annotation>
+ <xs:documentation>
+ emphasis
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="strong">
+ <xs:annotation>
+ <xs:documentation>
+ strong emphasis
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="dfn">
+ <xs:annotation>
+ <xs:documentation>
+ definitional
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="code">
+ <xs:annotation>
+ <xs:documentation>
+ program code
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="samp">
+ <xs:annotation>
+ <xs:documentation>
+ sample
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="kbd">
+ <xs:annotation>
+ <xs:documentation>
+ something user would type
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="var">
+ <xs:annotation>
+ <xs:documentation>
+ variable
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="cite">
+ <xs:annotation>
+ <xs:documentation>
+ citation
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="abbr">
+ <xs:annotation>
+ <xs:documentation>
+ abbreviation
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="acronym">
+ <xs:annotation>
+ <xs:documentation>
+ acronym
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="q">
+ <xs:annotation>
+ <xs:documentation>
+ inlined quote
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="cite" type="URI" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="sub">
+ <xs:annotation>
+ <xs:documentation>
+ subscript
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="sup">
+ <xs:annotation>
+ <xs:documentation>
+ superscript
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="tt">
+ <xs:annotation>
+ <xs:documentation>
+ fixed pitch font
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="i">
+ <xs:annotation>
+ <xs:documentation>
+ italic font
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="b">
+ <xs:annotation>
+ <xs:documentation>
+ bold font
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="big">
+ <xs:annotation>
+ <xs:documentation>
+ bigger font
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="small">
+ <xs:annotation>
+ <xs:documentation>
+ smaller font
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="u">
+ <xs:annotation>
+ <xs:documentation>
+ underline
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="s">
+ <xs:annotation>
+ <xs:documentation>
+ strike-through
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="strike">
+ <xs:annotation>
+ <xs:documentation>
+ strike-through
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="basefont" type="basefont.content">
+ <xs:annotation>
+ <xs:documentation>
+ base font size
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="font">
+ <xs:annotation>
+ <xs:documentation>
+ local change to font
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="coreattrs" />
+ <xs:attributeGroup ref="i18n" />
+ <xs:attribute name="size" />
+ <xs:attribute name="color" type="Color" />
+ <xs:attribute name="face" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ ==================== Object
+ ======================================
+
+ object is used to embed objects
+ as part of HTML pages.
+ param elements should precede other content.
+ Parameters
+ can also be expressed as attribute/value pairs on the
+ object element itself when brevity is desired.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="object" type="object.content" />
+
+ <xs:element name="param" type="param.content">
+ <xs:annotation>
+ <xs:documentation>
+ param is used to supply a named property value.
+ In
+ XML it would seem natural to follow RDF and support an
+ abbreviated
+ syntax where the param elements are replaced
+ by attribute value pairs
+ on the object start tag.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Java applet
+ ==================================
+
+ One of code or object attributes
+ must be present.
+ Place param elements before other content.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="applet" type="applet.content">
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Images
+ ===========================================
+
+ To avoid accessibility
+ problems for people who aren't
+ able to see the image, you should
+ provide a text
+ description using the alt and longdesc attributes.
+ In
+ addition, avoid the use of server-side image maps.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="img" type="img.content">
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ ================== Client-side image maps
+ ============================
+
+ These can be placed in the same document
+ or grouped in a
+ separate document although this isn't yet widely
+ supported
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="map" type="map.content">
+ </xs:element>
+
+ <xs:element name="area" type="area.content">
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ ================ Forms
+ ===============================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="form">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="form.content">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="action" use="required" type="URI" />
+ <xs:attribute name="method" default="get">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="get" />
+ <xs:enumeration value="post" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="enctype" type="ContentType"
+ default="application/x-www-form-urlencoded" />
+ <xs:attribute name="onsubmit" type="Script" />
+ <xs:attribute name="onreset" type="Script" />
+ <xs:attribute name="accept" type="ContentTypes" />
+ <xs:attribute name="accept-charset" type="Charsets" />
+ <xs:attribute name="target" type="FrameTarget" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="label">
+ <xs:annotation>
+ <xs:documentation>
+ Each label must not contain more than ONE field
+ Label elements shouldn't be nested.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="for" type="IDREF" />
+ <xs:attribute name="accesskey" type="Character" />
+ <xs:attribute name="onfocus" type="Script" />
+ <xs:attribute name="onblur" type="Script" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name="InputType">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="text" />
+ <xs:enumeration value="password" />
+ <xs:enumeration value="checkbox" />
+ <xs:enumeration value="radio" />
+ <xs:enumeration value="submit" />
+ <xs:enumeration value="reset" />
+ <xs:enumeration value="file" />
+ <xs:enumeration value="hidden" />
+ <xs:enumeration value="image" />
+ <xs:enumeration value="button" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:attribute name="checked">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="checked" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="disabled">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="disabled" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="readonly">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="readonly" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:element name="input" type="input.content">
+ <xs:annotation>
+ <xs:documentation>
+ form control
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="select" type="select.content">
+ <xs:annotation>
+ <xs:documentation>
+ option selector
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="optgroup" type="optgroup.content">
+ <xs:annotation>
+ <xs:documentation>
+ option group
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="option" type="option.content">
+ <xs:annotation>
+ <xs:documentation>
+ selectable choice
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="textarea" type="textarea.content">
+ <xs:annotation>
+ <xs:documentation>
+ multi-line text field
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="fieldset" type="fieldset.content">
+ <xs:annotation>
+ <xs:documentation>
+ The fieldset element is used to group form fields.
+ Only one legend element should occur in the content
+ and if present
+ should only be preceded by whitespace.
+
+ NOTE: this content model is
+ different from the XHTML 1.0 DTD,
+ closer to the intended content
+ model in HTML4 DTD
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:simpleType name="LAlign">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top" />
+ <xs:enumeration value="bottom" />
+ <xs:enumeration value="left" />
+ <xs:enumeration value="right" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="legend">
+ <xs:annotation>
+ <xs:documentation>
+ fieldset label
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="accesskey" type="Character" />
+ <xs:attribute name="align" type="LAlign" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="button">
+ <xs:annotation>
+ <xs:documentation>
+ Content is "Flow" excluding a, form and form
+ controls
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="button.content">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attributeGroup ref="focus" />
+ <xs:attribute name="name" />
+ <xs:attribute name="value" />
+ <xs:attribute name="type" default="submit">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="button" />
+ <xs:enumeration value="submit" />
+ <xs:enumeration value="reset" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute ref="disabled" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="isindex" type="isindex.content">
+ <xs:annotation>
+ <xs:documentation>
+ single-line text input control (DEPRECATED)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ ======================= Tables
+ =======================================
+
+ Derived from IETF HTML table
+ standard, see [RFC1942]
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="TFrame">
+ <xs:annotation>
+ <xs:documentation>
+ The border attribute sets the thickness of the
+ frame around the
+ table. The default units are screen pixels.
+
+ The frame
+ attribute specifies which parts of the frame around
+ the table should
+ be rendered. The values are not the same as
+ CALS to avoid a name
+ clash with the valign attribute.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="void" />
+ <xs:enumeration value="above" />
+ <xs:enumeration value="below" />
+ <xs:enumeration value="hsides" />
+ <xs:enumeration value="lhs" />
+ <xs:enumeration value="rhs" />
+ <xs:enumeration value="vsides" />
+ <xs:enumeration value="box" />
+ <xs:enumeration value="border" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="TRules">
+ <xs:annotation>
+ <xs:documentation>
+ The rules attribute defines which rules to draw
+ between cells:
+
+ If rules is absent then assume:
+ "none" if border is
+ absent or border="0" otherwise "all"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="none" />
+ <xs:enumeration value="groups" />
+ <xs:enumeration value="rows" />
+ <xs:enumeration value="cols" />
+ <xs:enumeration value="all" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="TAlign">
+ <xs:annotation>
+ <xs:documentation>
+ horizontal placement of table relative to document
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left" />
+ <xs:enumeration value="center" />
+ <xs:enumeration value="right" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:attributeGroup name="cellhalign">
+ <xs:annotation>
+ <xs:documentation>
+ horizontal alignment attributes for cell contents
+
+ char alignment char, e.g. char=':'
+ charoff offset for alignment char
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left" />
+ <xs:enumeration value="center" />
+ <xs:enumeration value="right" />
+ <xs:enumeration value="justify" />
+ <xs:enumeration value="char" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char" type="Character" />
+ <xs:attribute name="charoff" type="Length" />
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="cellvalign">
+ <xs:annotation>
+ <xs:documentation>
+ vertical alignment attributes for cell contents
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top" />
+ <xs:enumeration value="middle" />
+ <xs:enumeration value="bottom" />
+ <xs:enumeration value="baseline" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <xs:element name="table" type="table.content">
+ </xs:element>
+
+ <xs:simpleType name="CAlign">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top" />
+ <xs:enumeration value="bottom" />
+ <xs:enumeration value="left" />
+ <xs:enumeration value="right" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elFreeformExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="caption">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Inline">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="align" type="CAlign" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ Use thead to duplicate headers when breaking table
+ across page boundaries, or for static headers when
+ tbody sections are
+ rendered in scrolling panel.
+
+ Use tfoot to duplicate footers when
+ breaking table
+ across page boundaries, or for static footers when
+ tbody sections are rendered in scrolling panel.
+
+ Use multiple tbody
+ sections when rules are needed
+ between groups of table rows.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="thead" type="thead.content">
+ </xs:element>
+
+ <xs:element name="tfoot" type="tfoot.content">
+ </xs:element>
+
+ <xs:element name="tbody" type="tbody.content">
+ </xs:element>
+
+ <xs:element name="colgroup" type="colgroup.content">
+ <xs:annotation>
+ <xs:documentation>
+ colgroup groups a set of col elements. It allows
+ you to group
+ several semantically related columns together.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="col" type="col.content">
+ <xs:annotation>
+ <xs:documentation>
+ col elements define the alignment properties for
+ cells in
+ one or more columns.
+
+ The width attribute specifies the width
+ of the columns, e.g.
+
+ width=64 width in screen pixels
+ width=0.5*
+ relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="tr" type="tr.content">
+ </xs:element>
+
+ <xs:simpleType name="Scope">
+ <xs:annotation>
+ <xs:documentation>
+ Scope is simpler than headers attribute for common
+ tables
+ </xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="row" />
+ <xs:enumeration value="col" />
+ <xs:enumeration value="rowgroup" />
+ <xs:enumeration value="colgroup" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:annotation>
+ <xs:documentation>
+ th is for headers, td for data and for cells acting
+ as both
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="nowrap">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="nowrap" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:element name="th">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="abbr" type="Text" />
+ <xs:attribute name="axis" />
+ <xs:attribute name="headers" type="IDREFS" />
+ <xs:attribute name="scope" type="Scope" />
+ <xs:attribute name="rowspan" default="1" type="Number" />
+ <xs:attribute name="colspan" default="1" type="Number" />
+ <xs:attributeGroup ref="cellhalign" />
+ <xs:attributeGroup ref="cellvalign" />
+ <xs:attribute ref="nowrap" />
+ <xs:attribute name="bgcolor" type="Color" />
+ <xs:attribute name="width" type="Length" />
+ <xs:attribute name="height" type="Length" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="td">
+ <xs:complexType mixed="true">
+ <xs:complexContent>
+ <xs:extension base="Flow">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="abbr" type="Text" />
+ <xs:attribute name="axis" />
+ <xs:attribute name="headers" type="IDREFS" />
+ <xs:attribute name="scope" type="Scope" />
+ <xs:attribute name="rowspan" default="1" type="Number" />
+ <xs:attribute name="colspan" default="1" type="Number" />
+ <xs:attributeGroup ref="cellhalign" />
+ <xs:attributeGroup ref="cellvalign" />
+ <xs:attribute ref="nowrap" />
+ <xs:attribute name="bgcolor" type="Color" />
+ <xs:attribute name="width" type="Length" />
+ <xs:attribute name="height" type="Length" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="address.content" mixed="true">
+ <xs:group ref="address.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="address.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="inline"></xs:group>
+ <xs:group ref="misc.inline"></xs:group>
+ <xs:group ref="address.children.elements" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="address.children.elements">
+ <xs:choice>
+ <xs:element ref="p" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="applet.content" mixed="true">
+ <xs:group ref="applet.children" />
+ <xs:attributeGroup ref="coreattrs"></xs:attributeGroup>
+ <xs:attribute name="codebase" type="URI"></xs:attribute>
+ <xs:attribute name="archive" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute name="code" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute name="object" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute name="alt" type="Text"></xs:attribute>
+ <xs:attribute name="name" type="NMTOKEN"></xs:attribute>
+ <xs:attribute use="required" name="width" type="Length"></xs:attribute>
+ <xs:attribute use="required" name="height" type="Length"></xs:attribute>
+ <xs:attribute name="align" type="ImgAlign"></xs:attribute>
+ <xs:attribute name="hspace" type="Pixels"></xs:attribute>
+ <xs:attribute name="vspace" type="Pixels"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="applet.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="param.element.group" />
+ <xs:group ref="block"></xs:group>
+ <xs:group ref="form.element.group" />
+ <xs:group ref="inline"></xs:group>
+ <xs:group ref="misc"></xs:group>
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="param.element.group">
+ <xs:choice>
+ <xs:element ref="param"></xs:element>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="area.content">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attributeGroup ref="focus"></xs:attributeGroup>
+ <xs:attribute default="rect" name="shape" type="Shape"></xs:attribute>
+ <xs:attribute name="coords" type="Coords"></xs:attribute>
+ <xs:attribute name="href" type="URI"></xs:attribute>
+ <xs:attribute name="nohref">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="nohref"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute use="required" name="alt" type="Text"></xs:attribute>
+ <xs:attribute name="target" type="FrameTarget"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="base.content">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attribute name="id" type="ID"></xs:attribute>
+ <xs:attribute name="href" type="URI"></xs:attribute>
+ <xs:attribute name="target" type="FrameTarget"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="basefont.content">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attribute name="id" type="ID" />
+ <xs:attribute use="required" name="size" type="xs:anySimpleType" />
+ <xs:attribute name="color" type="Color" />
+ <xs:attribute name="face" type="xs:anySimpleType" />
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="br.content">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attributeGroup ref="coreattrs"></xs:attributeGroup>
+ <xs:attribute default="none" name="clear">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"></xs:enumeration>
+ <xs:enumeration value="all"></xs:enumeration>
+ <xs:enumeration value="right"></xs:enumeration>
+ <xs:enumeration value="none"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="col.content">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attribute default="1" name="span" type="Number"></xs:attribute>
+ <xs:attribute name="width" type="MultiLength"></xs:attribute>
+ <xs:attributeGroup ref="cellhalign"></xs:attributeGroup>
+ <xs:attributeGroup ref="cellvalign"></xs:attributeGroup>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="colgroup.content">
+ <xs:group ref="colgroup.children" />
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute default="1" name="span" type="Number" />
+ <xs:attribute name="width" type="MultiLength" />
+ <xs:attributeGroup ref="cellhalign" />
+ <xs:attributeGroup ref="cellvalign" />
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:group name="colgroup.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="col" />
+ <xs:group ref="cdk:structural" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <xs:complexType name="dir.content">
+ <xs:group ref="dir.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attribute ref="compact"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:group name="dir.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="li" />
+ <xs:group ref="cdk:structural" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <xs:complexType name="dl.content">
+ <xs:group ref="dl.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attribute ref="compact"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="dl.children">
+ <xs:choice>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="dt" />
+ <xs:element ref="dd" />
+ <xs:group ref="cdk:structural" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="fieldset.content" mixed="true">
+ <xs:group ref="fieldset.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="fieldset.children">
+ <xs:sequence>
+ <xs:group ref="legend.element.group" />
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="block"></xs:group>
+ <xs:group ref="form.element.group" />
+ <xs:group ref="inline"></xs:group>
+ <xs:group ref="misc"></xs:group>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:group name="legend.element.group">
+ <xs:choice>
+ <xs:element ref="legend"></xs:element>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="head.content">
+ <xs:group ref="head.children" />
+ <xs:attributeGroup ref="i18n"></xs:attributeGroup>
+ <xs:attribute name="id" type="ID"></xs:attribute>
+ <xs:attribute name="profile" type="URI"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="head.children">
+ <xs:sequence>
+ <xs:group ref="head.misc" />
+ <xs:choice>
+ <xs:sequence minOccurs="0">
+ <xs:element ref="title" />
+ <xs:group ref="head.misc" />
+ <xs:sequence minOccurs="0">
+ <xs:element ref="base" />
+ <xs:group ref="head.misc" />
+ </xs:sequence>
+ </xs:sequence>
+ <xs:sequence minOccurs="0">
+ <xs:element ref="base" />
+ <xs:group ref="head.misc" />
+ <xs:element ref="title" />
+ <xs:group ref="head.misc" />
+ </xs:sequence>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:complexType name="hr.content">
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"></xs:enumeration>
+ <xs:enumeration value="center"></xs:enumeration>
+ <xs:enumeration value="right"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="noshade">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="noshade"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="size" type="Pixels"></xs:attribute>
+ <xs:attribute name="width" type="Length"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="html.content">
+ <xs:group ref="html.children" />
+ <xs:attributeGroup ref="i18n"></xs:attributeGroup>
+ <xs:attribute name="id" type="ID"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:group name="html.children">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="head" />
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="cdk:structural" />
+ <xs:element minOccurs="0" ref="body" />
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="img.content">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attribute use="required" name="src" type="URI"></xs:attribute>
+ <xs:attribute use="required" name="alt" type="Text"></xs:attribute>
+ <xs:attribute name="name" type="NMTOKEN"></xs:attribute>
+ <xs:attribute name="longdesc" type="URI"></xs:attribute>
+ <xs:attribute name="height" type="Length"></xs:attribute>
+ <xs:attribute name="width" type="Length"></xs:attribute>
+ <xs:attribute name="usemap" type="URI">
+ <xs:annotation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="ismap">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ismap"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="align" type="ImgAlign"></xs:attribute>
+ <xs:attribute name="border" type="Length"></xs:attribute>
+ <xs:attribute name="hspace" type="Pixels"></xs:attribute>
+ <xs:attribute name="vspace" type="Pixels"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="input.content">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attributeGroup ref="focus"></xs:attributeGroup>
+ <xs:attribute default="text" name="type" type="InputType"></xs:attribute>
+ <xs:attribute name="name" type="xs:anySimpleType">
+ <xs:annotation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="value" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute ref="checked"></xs:attribute>
+ <xs:attribute ref="disabled"></xs:attribute>
+ <xs:attribute ref="readonly"></xs:attribute>
+ <xs:attribute name="size" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute name="maxlength" type="Number"></xs:attribute>
+ <xs:attribute name="src" type="URI"></xs:attribute>
+ <xs:attribute name="alt" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute name="usemap" type="URI"></xs:attribute>
+ <xs:attribute name="onselect" type="Script"></xs:attribute>
+ <xs:attribute name="onchange" type="Script"></xs:attribute>
+ <xs:attribute name="accept" type="ContentTypes"></xs:attribute>
+ <xs:attribute name="align" type="ImgAlign"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="isindex.content">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attributeGroup ref="coreattrs"></xs:attributeGroup>
+ <xs:attributeGroup ref="i18n"></xs:attributeGroup>
+ <xs:attribute name="prompt" type="Text"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="link.content">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attribute name="charset" type="Charset"></xs:attribute>
+ <xs:attribute name="href" type="URI"></xs:attribute>
+ <xs:attribute name="hreflang" type="LanguageCode"></xs:attribute>
+ <xs:attribute name="type" type="ContentType"></xs:attribute>
+ <xs:attribute name="rel" type="LinkTypes"></xs:attribute>
+ <xs:attribute name="rev" type="LinkTypes"></xs:attribute>
+ <xs:attribute name="media" type="MediaDesc"></xs:attribute>
+ <xs:attribute name="target" type="FrameTarget"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="map.content">
+ <xs:group ref="map.children" />
+ <xs:attributeGroup ref="i18n"></xs:attributeGroup>
+ <xs:attributeGroup ref="events"></xs:attributeGroup>
+ <xs:attribute use="required" name="id" type="ID"></xs:attribute>
+ <xs:attribute name="class" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute name="style" type="StyleSheet"></xs:attribute>
+ <xs:attribute name="title" type="Text"></xs:attribute>
+ <xs:attribute name="name" type="xs:anySimpleType"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="map.children">
+ <xs:choice>
+ <xs:choice maxOccurs="unbounded">
+ <xs:group ref="block"></xs:group>
+ <xs:group ref="form.element.group" />
+ <xs:group ref="misc"></xs:group>
+ </xs:choice>
+ <xs:group ref="area.element.group" maxOccurs="unbounded" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="area.element.group">
+ <xs:choice>
+ <xs:element ref="area" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="menu.content">
+ <xs:group ref="menu.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attribute ref="compact"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="menu.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="li" />
+ <xs:group ref="cdk:structural" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="meta.content">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attributeGroup ref="i18n"></xs:attributeGroup>
+ <xs:attribute name="id" type="ID"></xs:attribute>
+ <xs:attribute name="http-equiv" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute name="name" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute use="required" name="content" type="xs:anySimpleType">
+ </xs:attribute>
+ <xs:attribute name="scheme" type="xs:anySimpleType"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="object.content" mixed="true">
+ <xs:group ref="object.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attribute name="declare">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="declare"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="classid" type="URI"></xs:attribute>
+ <xs:attribute name="codebase" type="URI"></xs:attribute>
+ <xs:attribute name="data" type="URI"></xs:attribute>
+ <xs:attribute name="type" type="ContentType"></xs:attribute>
+ <xs:attribute name="codetype" type="ContentType"></xs:attribute>
+ <xs:attribute name="archive" type="UriList"></xs:attribute>
+ <xs:attribute name="standby" type="Text"></xs:attribute>
+ <xs:attribute name="height" type="Length"></xs:attribute>
+ <xs:attribute name="width" type="Length"></xs:attribute>
+ <xs:attribute name="usemap" type="URI"></xs:attribute>
+ <xs:attribute name="name" type="NMTOKEN"></xs:attribute>
+ <xs:attribute name="tabindex" type="Number"></xs:attribute>
+ <xs:attribute name="align" type="ImgAlign"></xs:attribute>
+ <xs:attribute name="border" type="Pixels"></xs:attribute>
+ <xs:attribute name="hspace" type="Pixels"></xs:attribute>
+ <xs:attribute name="vspace" type="Pixels"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="object.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="object.children.elements" />
+ <xs:group ref="block" />
+ <xs:group ref="inline" />
+ <xs:group ref="misc" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="object.children.elements">
+ <xs:choice>
+ <xs:element ref="param" />
+ <xs:element ref="form" />
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="ol.content">
+ <xs:group ref="ol.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attribute name="type" type="OLStyle"></xs:attribute>
+ <xs:attribute ref="compact"></xs:attribute>
+ <xs:attribute name="start" type="Number"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="ol.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="li" />
+ <xs:group ref="cdk:structural" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="optgroup.content">
+ <xs:group ref="optgroup.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attribute ref="disabled"></xs:attribute>
+ <xs:attribute use="required" name="label" type="Text"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="optgroup.children">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="option" />
+ <xs:group ref="cdk:structural" />
+ </xs:sequence>
+ </xs:group>
+
+ <xs:complexType name="option.content" mixed="true">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attribute name="selected">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="selected"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute ref="disabled"></xs:attribute>
+ <xs:attribute name="label" type="Text"></xs:attribute>
+ <xs:attribute name="value" type="xs:anySimpleType"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="param.content">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attribute name="id" type="ID"></xs:attribute>
+ <xs:attribute use="required" name="name" type="xs:anySimpleType">
+ </xs:attribute>
+ <xs:attribute name="value" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute default="data" name="valuetype">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="data"></xs:enumeration>
+ <xs:enumeration value="ref"></xs:enumeration>
+ <xs:enumeration value="object"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="type" type="ContentType"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="script.content" mixed="true">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attribute name="id" type="ID"></xs:attribute>
+ <xs:attribute name="charset" type="Charset"></xs:attribute>
+ <xs:attribute use="required" name="type" type="ContentType"></xs:attribute>
+ <xs:attribute name="language" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute name="src" type="URI"></xs:attribute>
+ <xs:attribute name="defer">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="defer"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute fixed="preserve" ref="xml:space"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="select.content">
+ <xs:group ref="select.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attribute name="name" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute name="size" type="Number"></xs:attribute>
+ <xs:attribute name="multiple">
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="multiple" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="cdk:elMixedExpression" />
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute ref="disabled"></xs:attribute>
+ <xs:attribute name="tabindex" type="tabindexNumber"></xs:attribute>
+ <xs:attribute name="onfocus" type="Script"></xs:attribute>
+ <xs:attribute name="onblur" type="Script"></xs:attribute>
+ <xs:attribute name="onchange" type="Script"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="select.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="optgroup" />
+ <xs:element ref="option" />
+ <xs:group ref="cdk:structural" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="style.content" mixed="true">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attributeGroup ref="i18n"></xs:attributeGroup>
+ <xs:attribute name="id" type="ID"></xs:attribute>
+ <xs:attribute use="required" name="type" type="ContentType"></xs:attribute>
+ <xs:attribute name="media" type="MediaDesc"></xs:attribute>
+ <xs:attribute name="title" type="Text"></xs:attribute>
+ <xs:attribute fixed="preserve" ref="xml:space"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="table.content">
+ <xs:group ref="table.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attribute name="summary" type="Text"></xs:attribute>
+ <xs:attribute name="width" type="Length"></xs:attribute>
+ <xs:attribute name="border" type="Pixels"></xs:attribute>
+ <xs:attribute name="frame" type="TFrame"></xs:attribute>
+ <xs:attribute name="rules" type="TRules"></xs:attribute>
+ <xs:attribute name="cellspacing" type="Length"></xs:attribute>
+ <xs:attribute name="cellpadding" type="Length"></xs:attribute>
+ <xs:attribute name="align" type="TAlign"></xs:attribute>
+ <xs:attribute name="bgcolor" type="Color"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="table.children">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="caption" />
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col" />
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup" />
+ </xs:choice>
+ <xs:element minOccurs="0" ref="thead" />
+ <xs:element minOccurs="0" ref="tfoot" />
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:choice>
+ <xs:group ref="cdk:structural" />
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tbody" />
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tr" />
+ </xs:choice>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:complexType name="tbody.content">
+ <xs:group ref="tbody.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attributeGroup ref="cellhalign"></xs:attributeGroup>
+ <xs:attributeGroup ref="cellvalign"></xs:attributeGroup>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="tbody.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="tr" />
+ <xs:group ref="cdk:structural" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="textarea.content" mixed="true">
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attributeGroup ref="focus"></xs:attributeGroup>
+ <xs:attribute name="name" type="xs:anySimpleType"></xs:attribute>
+ <xs:attribute use="required" name="rows" type="Number"></xs:attribute>
+ <xs:attribute use="required" name="cols" type="Number"></xs:attribute>
+ <xs:attribute ref="disabled"></xs:attribute>
+ <xs:attribute ref="readonly"></xs:attribute>
+ <xs:attribute name="onselect" type="Script"></xs:attribute>
+ <xs:attribute name="onchange" type="Script"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:complexType name="tfoot.content">
+ <xs:group ref="tfoot.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attributeGroup ref="cellhalign"></xs:attributeGroup>
+ <xs:attributeGroup ref="cellvalign"></xs:attributeGroup>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:group name="tfoot.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="tr" />
+ <xs:group ref="cdk:structural" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <xs:complexType name="thead.content">
+ <xs:group ref="thead.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attributeGroup ref="cellhalign"></xs:attributeGroup>
+ <xs:attributeGroup ref="cellvalign"></xs:attributeGroup>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+ <xs:group name="thead.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="tr" />
+ <xs:group ref="cdk:structural" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <xs:complexType name="title.content" mixed="true">
+ <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
+ <xs:attributeGroup ref="i18n"></xs:attributeGroup>
+ <xs:attribute name="id" type="ID"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:complexType name="tr.content">
+ <xs:group ref="tr.children" />
+ <xs:attributeGroup ref="attrs"></xs:attributeGroup>
+ <xs:attributeGroup ref="cellhalign"></xs:attributeGroup>
+ <xs:attributeGroup ref="cellvalign"></xs:attributeGroup>
+ <xs:attribute name="bgcolor" type="Color"></xs:attribute>
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="tr.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="th" />
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="td" />
+ <xs:group ref="cdk:structural" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="ul.content">
+ <xs:group ref="ul.children" />
+ <xs:attributeGroup ref="attrs" />
+ <xs:attribute name="type" type="ULStyle" />
+ <xs:attribute ref="compact" />
+ <xs:attributeGroup ref="cdk:core.attrs" />
+ </xs:complexType>
+
+ <xs:group name="ul.children">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="li" />
+ <xs:group ref="cdk:structural" />
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+</xs:schema>
Deleted: root/cdk/trunk/plugins/generator/src/main/xsd/cdk-template.xsd
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/xsd/cdk-template.xsd 2009-11-05 20:37:23 UTC (rev 15844)
+++ root/cdk/trunk/plugins/generator/src/main/xsd/cdk-template.xsd 2009-11-06 00:27:52 UTC (rev 15845)
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- targetNamespace="http://richfaces.org/cdk" xmlns="http://richfaces.org/cdk"
- elementFormDefault="qualified" attributeFormDefault="qualified"
- xmlns:xhtml="http://richfaces.org/xhtml-el">
-
- <xs:simpleType name="elStrictExpression">
- <xs:restriction base="xs:string">
- <xs:pattern value="#\{[^\}]+\}" />
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="elMixedExpression">
- <xs:restriction base="xs:string">
- <xs:pattern value=".*#\{[^\}]+\}.*" />
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="elFreeformExpression">
- <xs:restriction base="xs:string" />
- </xs:simpleType>
-
- <xs:attributeGroup name="core.attrs">
- <xs:attribute name="passThroughWithExclusions" type="xs:NMTOKENS" />
- </xs:attributeGroup>
-
- <xs:attributeGroup name="testGroup">
- <xs:attribute name="test" form="unqualified" use="required" type="elStrictExpression" />
- </xs:attributeGroup>
-
- <xs:element name="root">
- <xs:complexType mixed="true">
- <xs:choice>
- <xs:any minOccurs="0" maxOccurs="unbounded" />
- </xs:choice>
- <xs:attribute name="class" type="xs:string" form="unqualified" use="required" />
- <xs:attribute name="superclass" type="xs:string" form="unqualified"/>
- <xs:attribute name="componentclass" type="xs:string" form="unqualified" use="required" />
- </xs:complexType>
- </xs:element>
-
- <xs:group name="structural">
- <xs:choice>
- <xs:element name="body">
- <xs:complexType mixed="true">
- <xs:choice>
- <xs:any minOccurs="0" maxOccurs="unbounded" />
- </xs:choice>
- </xs:complexType>
- </xs:element>
- <xs:element ref="if" />
- <xs:element ref="choose" />
- <xs:element ref="call" />
- </xs:choice>
- </xs:group>
-
-
- <xs:element name="if">
- <xs:complexType mixed="true">
- <xs:choice>
- <xs:any minOccurs="0" maxOccurs="unbounded" />
- </xs:choice>
- <xs:attributeGroup ref="testGroup" />
- </xs:complexType>
- </xs:element>
- <xs:element name="choose">
- <xs:complexType>
- <xs:sequence>
- <xs:element maxOccurs="unbounded" name="when">
- <xs:complexType>
- <xs:choice>
- <xs:any minOccurs="0"
- maxOccurs="unbounded">
- </xs:any>
- </xs:choice>
- <xs:attributeGroup ref="testGroup" />
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" name="otherwise">
- <xs:complexType>
- <xs:choice>
- <xs:any minOccurs="0"
- maxOccurs="unbounded">
- </xs:any>
- </xs:choice>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="call">
- <xs:complexType>
- <xs:attribute name="expression" form="unqualified" />
- </xs:complexType>
- </xs:element>
-</xs:schema>
Deleted: root/cdk/trunk/plugins/generator/src/main/xsd/xhtml-el.xsd
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/xsd/xhtml-el.xsd 2009-11-05 20:37:23 UTC (rev 15844)
+++ root/cdk/trunk/plugins/generator/src/main/xsd/xhtml-el.xsd 2009-11-06 00:27:52 UTC (rev 15845)
@@ -1,3389 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema version="1.0" xml:lang="en"
- xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://richfaces.org/xhtml-el"
- xmlns="http://richfaces.org/xhtml-el" xmlns:xml="http://www.w3.org/XML/1998/namespace"
- elementFormDefault="qualified" xmlns:cdk="http://richfaces.org/cdk">
-
- <xs:import schemaLocation="cdk-template.xsd" namespace="http://richfaces.org/cdk" />
-
- <xs:annotation>
- <xs:documentation>
- XHTML 1.0 (Second Edition) Transitional in XML
- Schema
-
- This is the same as HTML 4 Transitional except for
- changes due
- to the differences between XML and SGML.
-
- Namespace =
- http://www.w3.org/1999/xhtml
-
- For further information, see:
- http://www.w3.org/TR/xhtml1
-
- Copyright (c) 1998-2002 W3C (MIT, INRIA,
- Keio),
- All Rights Reserved.
-
- The DTD version is identified by the PUBLIC
- and SYSTEM identifiers:
-
- PUBLIC "-//W3C//DTD XHTML 1.0
- Transitional//EN"
- SYSTEM
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
-
- $Id:
- xhtml1-transitional.xsd,v 1.5 2002/08/28 09:53:29 mimasa Exp $
- </xs:documentation>
- </xs:annotation>
-
- <xs:import namespace="http://www.w3.org/XML/1998/namespace"
- schemaLocation="http://www.w3.org/2001/xml.xsd" />
-
- <xs:annotation>
- <xs:documentation>
- ================ Character mnemonic entities
- =========================
-
- XHTML entity sets are identified by the
- PUBLIC and SYSTEM identifiers:
-
- PUBLIC "-//W3C//ENTITIES Latin 1 for
- XHTML//EN"
- SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent"
-
- PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
- SYSTEM
- "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent"
-
- PUBLIC
- "-//W3C//ENTITIES Symbols for XHTML//EN"
- SYSTEM
- "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent"
- </xs:documentation>
- </xs:annotation>
-
- <xs:annotation>
- <xs:documentation>
- ================== Imported Names
- ====================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:simpleType name="ContentType">
- <xs:annotation>
- <xs:documentation>
- media type, as per [RFC2045]
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="ContentTypes">
- <xs:annotation>
- <xs:documentation>
- comma-separated list of media types, as per
- [RFC2045]
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="Charset">
- <xs:annotation>
- <xs:documentation>
- a character encoding, as per [RFC2045]
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="Charsets">
- <xs:annotation>
- <xs:documentation>
- a space separated list of character encodings, as
- per [RFC2045]
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="LanguageCode">
- <xs:annotation>
- <xs:documentation>
- a language code, as per [RFC3066]
- </xs:documentation>
- </xs:annotation>
- <xs:union memberTypes="xs:language cdk:elMixedExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="Character">
- <xs:annotation>
- <xs:documentation>
- a single character, as per section 2.2 of [XML]
- </xs:documentation>
- </xs:annotation>
- <!-- TODO test -->
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:length value="1" fixed="true" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:simpleType name="simpleType.Number">
- <xs:restriction base="xs:nonNegativeInteger">
- <xs:pattern value="[0-9]+" />
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="Number">
- <xs:annotation>
- <xs:documentation>
- one or more digits
- </xs:documentation>
- </xs:annotation>
- <xs:union memberTypes="simpleType.Number cdk:elMixedExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="tabindexNumber">
- <xs:annotation>
- <xs:documentation>
- tabindex attribute specifies the position of the
- current element
- in the tabbing order for the current document. This
- value must be
- a number between 0 and 32767. User agents should ignore
- leading
- zeros.
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="simpleType.Number">
- <xs:minInclusive value="0" />
- <xs:maxInclusive value="32767" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:simpleType name="LinkTypes">
- <xs:annotation>
- <xs:documentation>
- space-separated list of link types
- </xs:documentation>
- </xs:annotation>
- <xs:union memberTypes="xs:NMTOKENS cdk:elMixedExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="MediaDesc">
- <xs:annotation>
- <xs:documentation>
- single or comma-separated list of media descriptors
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:pattern value="[^,]+(,\s*[^,]+)*" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:simpleType name="URI">
- <xs:annotation>
- <xs:documentation>
- a Uniform Resource Identifier, see [RFC2396]
- </xs:documentation>
- </xs:annotation>
- <xs:union memberTypes="xs:anyURI cdk:elMixedExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="UriList">
- <xs:annotation>
- <xs:documentation>
- a space separated list of Uniform Resource
- Identifiers
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="Datetime">
- <xs:annotation>
- <xs:documentation>
- date and time information. ISO date format
- </xs:documentation>
- </xs:annotation>
- <xs:union memberTypes="xs:dateTime cdk:elMixedExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="Script">
- <xs:annotation>
- <xs:documentation>
- script expression
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="StyleSheet">
- <xs:annotation>
- <xs:documentation>
- style sheet data
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="Text">
- <xs:annotation>
- <xs:documentation>
- used for titles etc.
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
-
- <xs:simpleType name="FrameTarget">
- <xs:annotation>
- <xs:documentation>
- render in this frame
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:NMTOKEN">
- <xs:pattern value="_(blank|self|parent|top)|[A-Za-z]\c*" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:simpleType name="Length">
- <xs:annotation>
- <xs:documentation>
- nn for pixels or nn% for percentage length
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:simpleType name="MultiLength">
- <xs:annotation>
- <xs:documentation>
- pixel, percentage, or relative
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)|[1-9]?(\d+)?\*" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:simpleType name="Pixels">
- <xs:annotation>
- <xs:documentation>
- integer representing length in pixels
- </xs:documentation>
- </xs:annotation>
- <xs:union memberTypes="xs:nonNegativeInteger cdk:elMixedExpression" />
- </xs:simpleType>
-
- <xs:annotation>
- <xs:documentation>
- these are used for image maps
- </xs:documentation>
- </xs:annotation>
-
- <xs:simpleType name="Shape">
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="rect" />
- <xs:enumeration value="circle" />
- <xs:enumeration value="poly" />
- <xs:enumeration value="default" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:simpleType name="Coords">
- <xs:annotation>
- <xs:documentation>
- comma separated list of lengths
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)(,\s*[-+]?(\d+|\d+(\.\d+)?%))*" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:simpleType name="ImgAlign">
- <xs:annotation>
- <xs:documentation>
- used for object, applet, img, input and iframe
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="top" />
- <xs:enumeration value="middle" />
- <xs:enumeration value="bottom" />
- <xs:enumeration value="left" />
- <xs:enumeration value="right" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:simpleType name="Color">
- <xs:annotation>
- <xs:documentation>
- a color using sRGB: #RRGGBB as Hex values
-
- There are
- also 16 widely known color names with their sRGB values:
-
- Black =
- #000000 Green = #008000
- Silver = #C0C0C0 Lime = #00FF00
- Gray = #808080
- Olive = #808000
- White = #FFFFFF Yellow = #FFFF00
- Maroon = #800000 Navy
- = #000080
- Red = #FF0000 Blue = #0000FF
- Purple = #800080 Teal = #008080
- Fuchsia= #FF00FF Aqua = #00FFFF
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:pattern value="[A-Za-z]+|#[0-9A-Fa-f]{3}|#[0-9A-Fa-f]{6}" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <!-- TODO: add constraints -->
- <xs:simpleType name="ID">
- <xs:union memberTypes="xs:ID cdk:elMixedExpression" />
- </xs:simpleType>
- <xs:simpleType name="IDREF">
- <xs:union memberTypes="xs:IDREF cdk:elMixedExpression" />
- </xs:simpleType>
- <xs:simpleType name="IDREFS">
- <xs:union memberTypes="xs:IDREFS cdk:elMixedExpression" />
- </xs:simpleType>
- <xs:simpleType name="NMTOKEN">
- <xs:union memberTypes="xs:NMTOKEN cdk:elMixedExpression" />
- </xs:simpleType>
- <xs:simpleType name="NMTOKENS">
- <xs:union memberTypes="xs:NMTOKENS cdk:elMixedExpression" />
- </xs:simpleType>
-
- <xs:annotation>
- <xs:documentation>
- =================== Generic Attributes
- ===============================
- </xs:documentation>
- </xs:annotation>
-
- <xs:attributeGroup name="coreattrs">
- <xs:annotation>
- <xs:documentation>
- core attributes common to most elements
- id
- document-wide unique id
- class space separated list of classes
- style
- associated style info
- title advisory title/amplification
- </xs:documentation>
- </xs:annotation>
- <xs:attribute name="id" type="ID" />
- <xs:attribute name="class" type="NMTOKENS" />
- <xs:attribute name="style" type="StyleSheet" />
- <xs:attribute name="title" type="Text" />
- </xs:attributeGroup>
-
- <xs:simpleType name="simpleType.dir">
- <xs:restriction base="xs:token">
- <xs:enumeration value="ltr" />
- <xs:enumeration value="rtl" />
- </xs:restriction>
- </xs:simpleType>
-
- <xs:attributeGroup name="i18n">
- <xs:annotation>
- <xs:documentation>
- internationalization attributes
- lang language code
- (backwards compatible)
- xml:lang language code (as per XML 1.0 spec)
- dir direction for weak/neutral text
- </xs:documentation>
- </xs:annotation>
- <xs:attribute name="lang" type="LanguageCode" />
-
- <!-- TODO: xml:lang can be made EL -->
- <xs:attribute ref="xml:lang" />
- <xs:attribute name="dir">
- <xs:simpleType>
- <xs:union memberTypes="simpleType.dir cdk:elMixedExpression" />
- </xs:simpleType>
- </xs:attribute>
- </xs:attributeGroup>
-
- <xs:attributeGroup name="events">
- <xs:annotation>
- <xs:documentation>
- attributes for common UI events
- onclick a pointer
- button was clicked
- ondblclick a pointer button was double clicked
- onmousedown a pointer button was pressed down
- onmouseup a pointer
- button was released
- onmousemove a pointer was moved onto the element
- onmouseout a pointer was moved away from the element
- onkeypress a key
- was pressed and released
- onkeydown a key was pressed down
- onkeyup a
- key was released
- </xs:documentation>
- </xs:annotation>
- <xs:attribute name="onclick" type="Script" />
- <xs:attribute name="ondblclick" type="Script" />
- <xs:attribute name="onmousedown" type="Script" />
- <xs:attribute name="onmouseup" type="Script" />
- <xs:attribute name="onmouseover" type="Script" />
- <xs:attribute name="onmousemove" type="Script" />
- <xs:attribute name="onmouseout" type="Script" />
- <xs:attribute name="onkeypress" type="Script" />
- <xs:attribute name="onkeydown" type="Script" />
- <xs:attribute name="onkeyup" type="Script" />
- </xs:attributeGroup>
-
- <xs:attributeGroup name="focus">
- <xs:annotation>
- <xs:documentation>
- attributes for elements that can get the focus
- accesskey accessibility key character
- tabindex position in tabbing
- order
- onfocus the element got the focus
- onblur the element lost the
- focus
- </xs:documentation>
- </xs:annotation>
- <xs:attribute name="accesskey" type="Character" />
- <xs:attribute name="tabindex" type="tabindexNumber" />
- <xs:attribute name="onfocus" type="Script" />
- <xs:attribute name="onblur" type="Script" />
- </xs:attributeGroup>
-
- <xs:attributeGroup name="attrs">
- <xs:attributeGroup ref="coreattrs" />
- <xs:attributeGroup ref="i18n" />
- <xs:attributeGroup ref="events" />
- </xs:attributeGroup>
-
- <xs:attributeGroup name="TextAlign">
- <xs:annotation>
- <xs:documentation>
- text alignment for p, div, h1-h6. The default is
- align="left" for ltr headings, "right" for rtl
- </xs:documentation>
- </xs:annotation>
- <xs:attribute name="align">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="left" />
- <xs:enumeration value="center" />
- <xs:enumeration value="right" />
- <xs:enumeration value="justify" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- </xs:attributeGroup>
-
- <xs:annotation>
- <xs:documentation>
- =================== Text Elements
- ====================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:group name="special.extra">
- <xs:choice>
- <xs:element ref="object" />
- <xs:element ref="applet" />
- <xs:element ref="img" />
- <xs:element ref="map" />
- <xs:element ref="iframe" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="special.basic">
- <xs:choice>
- <xs:element ref="br" />
- <xs:element ref="span" />
- <xs:element ref="bdo" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="special">
- <xs:choice>
- <xs:group ref="special.basic" />
- <xs:group ref="special.extra" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="fontstyle.extra">
- <xs:choice>
- <xs:element ref="big" />
- <xs:element ref="small" />
- <xs:element ref="font" />
- <xs:element ref="basefont" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="fontstyle.basic">
- <xs:choice>
- <xs:element ref="tt" />
- <xs:element ref="i" />
- <xs:element ref="b" />
- <xs:element ref="u" />
- <xs:element ref="s" />
- <xs:element ref="strike" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="fontstyle">
- <xs:choice>
- <xs:group ref="fontstyle.basic" />
- <xs:group ref="fontstyle.extra" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="phrase.extra">
- <xs:choice>
- <xs:element ref="sub" />
- <xs:element ref="sup" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="phrase.basic">
- <xs:choice>
- <xs:element ref="em" />
- <xs:element ref="strong" />
- <xs:element ref="dfn" />
- <xs:element ref="code" />
- <xs:element ref="q" />
- <xs:element ref="samp" />
- <xs:element ref="kbd" />
- <xs:element ref="var" />
- <xs:element ref="cite" />
- <xs:element ref="abbr" />
- <xs:element ref="acronym" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="phrase">
- <xs:choice>
- <xs:group ref="phrase.basic" />
- <xs:group ref="phrase.extra" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="inline.forms">
- <xs:choice>
- <xs:element ref="input" />
- <xs:element ref="select" />
- <xs:element ref="textarea" />
- <xs:element ref="label" />
- <xs:element ref="button" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="misc.inline">
- <xs:annotation>
- <xs:documentation>
- these can only occur at block level
- </xs:documentation>
- </xs:annotation>
- <xs:choice>
- <xs:group ref="cdk:structural" />
- <xs:element ref="ins" />
- <xs:element ref="del" />
- <xs:element ref="script" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="misc">
- <xs:annotation>
- <xs:documentation>
- these can only occur at block level
- </xs:documentation>
- </xs:annotation>
- <xs:choice>
- <xs:group ref="misc.elements" />
- <xs:group ref="misc.inline" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="misc.elements">
- <xs:choice>
- <xs:element ref="noscript" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="inline">
- <xs:choice>
- <xs:group ref="inline.elements" />
- <xs:group ref="special" />
- <xs:group ref="fontstyle" />
- <xs:group ref="phrase" />
- <xs:group ref="inline.forms" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="inline.elements">
- <xs:choice>
- <xs:element ref="a" />
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="Inline" mixed="true">
- <xs:annotation>
- <xs:documentation>
- "Inline" covers inline or "text-level" element
- </xs:documentation>
- </xs:annotation>
- <xs:group ref="Inline.content" />
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="Inline.content">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="inline" />
- <xs:group ref="misc.inline" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:annotation>
- <xs:documentation>
- ================== Block level elements
- ==============================
- </xs:documentation>
- </xs:annotation>
-
- <xs:group name="heading">
- <xs:choice>
- <xs:element ref="h1" />
- <xs:element ref="h2" />
- <xs:element ref="h3" />
- <xs:element ref="h4" />
- <xs:element ref="h5" />
- <xs:element ref="h6" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="lists">
- <xs:choice>
- <xs:element ref="ul" />
- <xs:element ref="ol" />
- <xs:element ref="dl" />
- <xs:element ref="menu" />
- <xs:element ref="dir" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="blocktext">
- <xs:choice>
- <xs:element ref="pre" />
- <xs:element ref="hr" />
- <xs:element ref="blockquote" />
- <xs:element ref="address" />
- <xs:element ref="center" />
- <xs:element ref="noframes" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="block">
- <xs:choice>
- <xs:group ref="block.children" />
- <xs:group ref="heading" />
- <xs:group ref="lists" />
- <xs:group ref="blocktext" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="block.children">
- <xs:choice>
- <xs:element ref="p" />
- <xs:element ref="div" />
- <xs:element ref="isindex" />
- <xs:element ref="fieldset" />
- <xs:element ref="table" />
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="Flow" mixed="true">
- <xs:annotation>
- <xs:documentation>
- "Flow" mixes block and inline and is used for list
- items etc.
- </xs:documentation>
- </xs:annotation>
- <xs:group ref="Flow.children" />
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="Flow.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="block" />
- <xs:group ref="form.element.group" />
- <xs:group ref="inline" />
- <xs:group ref="misc" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:group name="form.element.group">
- <xs:choice>
- <xs:element ref="form" />
- </xs:choice>
- </xs:group>
-
- <xs:annotation>
- <xs:documentation>
- ================== Content models for exclusions
- =====================
- </xs:documentation>
- </xs:annotation>
-
- <xs:complexType name="a.content" mixed="true">
- <xs:group ref="a.children" minOccurs="0" maxOccurs="unbounded" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attributeGroup ref="focus"></xs:attributeGroup>
- <xs:attribute name="charset" type="Charset"></xs:attribute>
- <xs:attribute name="type" type="ContentType"></xs:attribute>
- <xs:attribute name="name" type="NMTOKEN"></xs:attribute>
- <xs:attribute name="href" type="URI"></xs:attribute>
- <xs:attribute name="hreflang" type="LanguageCode"></xs:attribute>
- <xs:attribute name="rel" type="LinkTypes"></xs:attribute>
- <xs:attribute name="rev" type="LinkTypes"></xs:attribute>
- <xs:attribute default="rect" name="shape" type="Shape"></xs:attribute>
- <xs:attribute name="coords" type="Coords"></xs:attribute>
- <xs:attribute name="target" type="FrameTarget"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="a.children">
- <xs:choice>
- <xs:group ref="special"></xs:group>
- <xs:group ref="fontstyle"></xs:group>
- <xs:group ref="phrase"></xs:group>
- <xs:group ref="inline.forms"></xs:group>
- <xs:group ref="misc.inline"></xs:group>
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="pre.content" mixed="true">
- <xs:annotation>
- <xs:documentation>
- pre uses "Inline" excluding img, object, applet,
- big, small,
- font, or basefont
- </xs:documentation>
- </xs:annotation>
- <xs:group ref="pre.children" />
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="pre.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="a.element.group" />
- <xs:group ref="special.basic" />
- <xs:group ref="fontstyle.basic" />
- <xs:group ref="phrase.basic" />
- <xs:group ref="inline.forms" />
- <xs:group ref="misc.inline" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:group name="a.element.group">
- <xs:choice>
- <xs:element ref="a" />
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="form.content" mixed="true">
- <xs:annotation>
- <xs:documentation>
- form uses "Flow" excluding form
- </xs:documentation>
- </xs:annotation>
- <xs:group ref="form.children" />
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="form.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="block" />
- <xs:group ref="inline" />
- <xs:group ref="misc" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="button.content" mixed="true">
- <xs:annotation>
- <xs:documentation>
- button uses "Flow" but excludes a, form, form
- controls, iframe
- </xs:documentation>
- </xs:annotation>
- <xs:group ref="button.children" />
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="button.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="button.children.elements" />
- <xs:group ref="heading" />
- <xs:group ref="lists" />
- <xs:group ref="blocktext" />
- <xs:group ref="fontstyle" />
- <xs:group ref="phrase" />
- <xs:group ref="misc" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:group name="button.children.elements">
- <xs:choice>
- <xs:element ref="p" />
- <xs:element ref="div" />
- <xs:element ref="table" />
- <xs:element ref="br" />
- <xs:element ref="span" />
- <xs:element ref="bdo" />
- <xs:element ref="object" />
- <xs:element ref="applet" />
- <xs:element ref="img" />
- <xs:element ref="map" />
- </xs:choice>
- </xs:group>
-
- <xs:annotation>
- <xs:documentation>
- ================ Document Structure
- ==================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="html" type="html.content">
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- ================ Document Head
- =======================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:group name="head.misc">
- <xs:sequence>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:element ref="script" />
- <xs:element ref="style" />
- <xs:element ref="meta" />
- <xs:element ref="link" />
- <xs:element ref="object" />
- <xs:element ref="isindex" />
- </xs:choice>
- </xs:sequence>
- </xs:group>
-
- <xs:element name="head" type="head.content">
- <xs:annotation>
- <xs:documentation>
- content model is "head.misc" combined with a single
- title and an optional base element in any order
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="title" type="title.content">
- <xs:annotation>
- <xs:documentation>
- The title element is not considered part of the
- flow of text.
- It should be displayed, for example as the page header
- or
- window title. Exactly one title is required per document.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="base" type="base.content">
- <xs:annotation>
- <xs:documentation>
- document base URI
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="meta" type="meta.content">
- <xs:annotation>
- <xs:documentation>
- generic metainformation
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="link" type="link.content">
- <xs:annotation>
- <xs:documentation>
- Relationship values can be used in principle:
-
- a) for
- document specific toolbars/menus when used
- with the link element in
- document head e.g.
- start, contents, previous, next, index, end, help
- b) to link to a separate style sheet (rel="stylesheet")
- c) to make a
- link to a script (rel="script")
- d) by stylesheets to control how
- collections of
- html nodes are rendered into printed documents
- e) to
- make a link to a printable version of this document
- e.g. a PostScript
- or PDF version (rel="alternate" media="print")
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="style" type="style.content">
- <xs:annotation>
- <xs:documentation>
- style info, which may include CDATA sections
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="script" type="script.content">
- <xs:annotation>
- <xs:documentation>
- script statements, which may include CDATA sections
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="noscript">
- <xs:annotation>
- <xs:documentation>
- alternate content container for non script-based
- rendering
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- ======================= Frames
- =======================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="iframe">
- <xs:annotation>
- <xs:documentation>
- inline subwindow
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="coreattrs" />
- <xs:attribute name="longdesc" type="URI" />
- <xs:attribute name="name" type="NMTOKEN" />
- <xs:attribute name="src" type="URI" />
- <xs:attribute name="frameborder" default="1">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="1" />
- <xs:enumeration value="0" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="marginwidth" type="Pixels" />
- <xs:attribute name="marginheight" type="Pixels" />
- <xs:attribute name="scrolling" default="auto">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="yes" />
- <xs:enumeration value="no" />
- <xs:enumeration value="auto" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="align" type="ImgAlign" />
- <xs:attribute name="height" type="Length" />
- <xs:attribute name="width" type="Length" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="noframes">
- <xs:annotation>
- <xs:documentation>
- alternate content container for non frame-based
- rendering
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- =================== Document Body
- ====================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="body">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="onload" type="Script" />
- <xs:attribute name="onunload" type="Script" />
- <xs:attribute name="background" type="URI" />
- <xs:attribute name="bgcolor" type="Color" />
- <xs:attribute name="text" type="Color" />
- <xs:attribute name="link" type="Color" />
- <xs:attribute name="vlink" type="Color" />
- <xs:attribute name="alink" type="Color" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="div">
- <xs:annotation>
- <xs:documentation>
- generic language/style container
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="attrs" />
- <xs:attributeGroup ref="TextAlign" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- =================== Paragraphs
- =======================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="p">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- <xs:attributeGroup ref="TextAlign" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- =================== Headings
- =========================================
-
- There are six levels of
- headings from h1 (the most important)
- to h6 (the least important).
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="h1">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- <xs:attributeGroup ref="TextAlign" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="h2">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- <xs:attributeGroup ref="TextAlign" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="h3">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- <xs:attributeGroup ref="TextAlign" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="h4">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- <xs:attributeGroup ref="TextAlign" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="h5">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- <xs:attributeGroup ref="TextAlign" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="h6">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- <xs:attributeGroup ref="TextAlign" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- =================== Lists
- ============================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:simpleType name="ULStyle">
- <xs:annotation>
- <xs:documentation>
- Unordered list bullet styles
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="disc" />
- <xs:enumeration value="square" />
- <xs:enumeration value="circle" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:attribute name="compact">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="compact" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
-
- <xs:element name="ul" type="ul.content">
- <xs:annotation>
- <xs:documentation>
- Unordered list
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:simpleType name="OLStyle">
- <xs:annotation>
- <xs:documentation>
- Ordered list numbering style
-
- 1 arabic numbers 1, 2,
- 3, ...
- a lower alpha a, b, c, ...
- A upper alpha A, B, C, ...
- i lower
- roman i, ii, iii, ...
- I upper roman I, II, III, ...
-
- The style is
- applied to the sequence number which by default
- is reset to 1 for the
- first list item in an ordered list.
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
-
- <xs:element name="ol" type="ol.content">
- <xs:annotation>
- <xs:documentation>
- Ordered (numbered) list
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="menu" type="menu.content">
- <xs:annotation>
- <xs:documentation>
- single column list (DEPRECATED)
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="dir" type="dir.content">
- <xs:annotation>
- <xs:documentation>
- multiple column list (DEPRECATED)
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:simpleType name="LIStyle">
- <xs:annotation>
- <xs:documentation>
- LIStyle is constrained to: "(ULStyle|OLStyle)"
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
-
- <xs:element name="li">
- <xs:annotation>
- <xs:documentation>
- list item
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="type" type="LIStyle" />
- <xs:attribute name="value" type="Number" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- definition lists - dt for term, dd for its
- definition
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="dl" type="dl.content" />
-
- <xs:element name="dt">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="dd">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- =================== Address
- ==========================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="address" type="address.content">
- <xs:annotation>
- <xs:documentation>
- information on author
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- =================== Horizontal Rule
- ==================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="hr" type="hr.content">
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- =================== Preformatted Text
- ================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="pre">
- <xs:annotation>
- <xs:documentation>
- content is "Inline" excluding
- "img|object|applet|big|small|sub|sup|font|basefont"
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="pre.content">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="width" type="Number" />
- <xs:attribute ref="xml:space" fixed="preserve" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- =================== Block-like Quotes
- ================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="blockquote">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="cite" type="URI" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- =================== Text alignment
- ===================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="center">
- <xs:annotation>
- <xs:documentation>
- center content
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- =================== Inserted/Deleted Text
- ============================
-
- ins/del are allowed in block and inline
- content, but its
- inappropriate to include block content within an ins
- element
- occurring in inline content.
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="ins">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="cite" type="URI" />
- <xs:attribute name="datetime" type="Datetime" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="del">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="cite" type="URI" />
- <xs:attribute name="datetime" type="Datetime" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- ================== The Anchor Element
- ================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="a" type="a.content">
- <xs:annotation>
- <xs:documentation>
- content is "Inline" except that anchors shouldn't
- be nested
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- ===================== Inline Elements
- ================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="span">
- <xs:annotation>
- <xs:documentation>
- generic language/style container
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="bdo">
- <xs:annotation>
- <xs:documentation>
- I18N BiDi over-ride
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="coreattrs" />
- <xs:attributeGroup ref="events" />
- <xs:attribute name="lang" type="LanguageCode" />
- <xs:attribute ref="xml:lang" />
- <xs:attribute name="dir" use="required">
- <xs:simpleType>
- <xs:union memberTypes="simpleType.dir cdk:elMixedExpression" />
- </xs:simpleType>
- </xs:attribute>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="br" type="br.content">
- <xs:annotation>
- <xs:documentation>
- forced line break
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="em">
- <xs:annotation>
- <xs:documentation>
- emphasis
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="strong">
- <xs:annotation>
- <xs:documentation>
- strong emphasis
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="dfn">
- <xs:annotation>
- <xs:documentation>
- definitional
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="code">
- <xs:annotation>
- <xs:documentation>
- program code
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="samp">
- <xs:annotation>
- <xs:documentation>
- sample
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="kbd">
- <xs:annotation>
- <xs:documentation>
- something user would type
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="var">
- <xs:annotation>
- <xs:documentation>
- variable
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="cite">
- <xs:annotation>
- <xs:documentation>
- citation
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="abbr">
- <xs:annotation>
- <xs:documentation>
- abbreviation
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="acronym">
- <xs:annotation>
- <xs:documentation>
- acronym
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="q">
- <xs:annotation>
- <xs:documentation>
- inlined quote
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="cite" type="URI" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="sub">
- <xs:annotation>
- <xs:documentation>
- subscript
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="sup">
- <xs:annotation>
- <xs:documentation>
- superscript
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="tt">
- <xs:annotation>
- <xs:documentation>
- fixed pitch font
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="i">
- <xs:annotation>
- <xs:documentation>
- italic font
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="b">
- <xs:annotation>
- <xs:documentation>
- bold font
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="big">
- <xs:annotation>
- <xs:documentation>
- bigger font
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="small">
- <xs:annotation>
- <xs:documentation>
- smaller font
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="u">
- <xs:annotation>
- <xs:documentation>
- underline
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="s">
- <xs:annotation>
- <xs:documentation>
- strike-through
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="strike">
- <xs:annotation>
- <xs:documentation>
- strike-through
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="basefont" type="basefont.content">
- <xs:annotation>
- <xs:documentation>
- base font size
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="font">
- <xs:annotation>
- <xs:documentation>
- local change to font
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="coreattrs" />
- <xs:attributeGroup ref="i18n" />
- <xs:attribute name="size" />
- <xs:attribute name="color" type="Color" />
- <xs:attribute name="face" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- ==================== Object
- ======================================
-
- object is used to embed objects
- as part of HTML pages.
- param elements should precede other content.
- Parameters
- can also be expressed as attribute/value pairs on the
- object element itself when brevity is desired.
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="object" type="object.content" />
-
- <xs:element name="param" type="param.content">
- <xs:annotation>
- <xs:documentation>
- param is used to supply a named property value.
- In
- XML it would seem natural to follow RDF and support an
- abbreviated
- syntax where the param elements are replaced
- by attribute value pairs
- on the object start tag.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- =================== Java applet
- ==================================
-
- One of code or object attributes
- must be present.
- Place param elements before other content.
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="applet" type="applet.content">
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- =================== Images
- ===========================================
-
- To avoid accessibility
- problems for people who aren't
- able to see the image, you should
- provide a text
- description using the alt and longdesc attributes.
- In
- addition, avoid the use of server-side image maps.
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="img" type="img.content">
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- ================== Client-side image maps
- ============================
-
- These can be placed in the same document
- or grouped in a
- separate document although this isn't yet widely
- supported
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="map" type="map.content">
- </xs:element>
-
- <xs:element name="area" type="area.content">
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- ================ Forms
- ===============================================
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="form">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="form.content">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="action" use="required" type="URI" />
- <xs:attribute name="method" default="get">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="get" />
- <xs:enumeration value="post" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="enctype" type="ContentType"
- default="application/x-www-form-urlencoded" />
- <xs:attribute name="onsubmit" type="Script" />
- <xs:attribute name="onreset" type="Script" />
- <xs:attribute name="accept" type="ContentTypes" />
- <xs:attribute name="accept-charset" type="Charsets" />
- <xs:attribute name="target" type="FrameTarget" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="label">
- <xs:annotation>
- <xs:documentation>
- Each label must not contain more than ONE field
- Label elements shouldn't be nested.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="for" type="IDREF" />
- <xs:attribute name="accesskey" type="Character" />
- <xs:attribute name="onfocus" type="Script" />
- <xs:attribute name="onblur" type="Script" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:simpleType name="InputType">
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="text" />
- <xs:enumeration value="password" />
- <xs:enumeration value="checkbox" />
- <xs:enumeration value="radio" />
- <xs:enumeration value="submit" />
- <xs:enumeration value="reset" />
- <xs:enumeration value="file" />
- <xs:enumeration value="hidden" />
- <xs:enumeration value="image" />
- <xs:enumeration value="button" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:attribute name="checked">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="checked" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="disabled">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="disabled" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="readonly">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="readonly" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
-
- <xs:element name="input" type="input.content">
- <xs:annotation>
- <xs:documentation>
- form control
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="select" type="select.content">
- <xs:annotation>
- <xs:documentation>
- option selector
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="optgroup" type="optgroup.content">
- <xs:annotation>
- <xs:documentation>
- option group
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="option" type="option.content">
- <xs:annotation>
- <xs:documentation>
- selectable choice
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="textarea" type="textarea.content">
- <xs:annotation>
- <xs:documentation>
- multi-line text field
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="fieldset" type="fieldset.content">
- <xs:annotation>
- <xs:documentation>
- The fieldset element is used to group form fields.
- Only one legend element should occur in the content
- and if present
- should only be preceded by whitespace.
-
- NOTE: this content model is
- different from the XHTML 1.0 DTD,
- closer to the intended content
- model in HTML4 DTD
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:simpleType name="LAlign">
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="top" />
- <xs:enumeration value="bottom" />
- <xs:enumeration value="left" />
- <xs:enumeration value="right" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:element name="legend">
- <xs:annotation>
- <xs:documentation>
- fieldset label
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="accesskey" type="Character" />
- <xs:attribute name="align" type="LAlign" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="button">
- <xs:annotation>
- <xs:documentation>
- Content is "Flow" excluding a, form and form
- controls
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="button.content">
- <xs:attributeGroup ref="attrs" />
- <xs:attributeGroup ref="focus" />
- <xs:attribute name="name" />
- <xs:attribute name="value" />
- <xs:attribute name="type" default="submit">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="button" />
- <xs:enumeration value="submit" />
- <xs:enumeration value="reset" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute ref="disabled" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="isindex" type="isindex.content">
- <xs:annotation>
- <xs:documentation>
- single-line text input control (DEPRECATED)
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- ======================= Tables
- =======================================
-
- Derived from IETF HTML table
- standard, see [RFC1942]
- </xs:documentation>
- </xs:annotation>
-
- <xs:simpleType name="TFrame">
- <xs:annotation>
- <xs:documentation>
- The border attribute sets the thickness of the
- frame around the
- table. The default units are screen pixels.
-
- The frame
- attribute specifies which parts of the frame around
- the table should
- be rendered. The values are not the same as
- CALS to avoid a name
- clash with the valign attribute.
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="void" />
- <xs:enumeration value="above" />
- <xs:enumeration value="below" />
- <xs:enumeration value="hsides" />
- <xs:enumeration value="lhs" />
- <xs:enumeration value="rhs" />
- <xs:enumeration value="vsides" />
- <xs:enumeration value="box" />
- <xs:enumeration value="border" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:simpleType name="TRules">
- <xs:annotation>
- <xs:documentation>
- The rules attribute defines which rules to draw
- between cells:
-
- If rules is absent then assume:
- "none" if border is
- absent or border="0" otherwise "all"
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="none" />
- <xs:enumeration value="groups" />
- <xs:enumeration value="rows" />
- <xs:enumeration value="cols" />
- <xs:enumeration value="all" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:simpleType name="TAlign">
- <xs:annotation>
- <xs:documentation>
- horizontal placement of table relative to document
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="left" />
- <xs:enumeration value="center" />
- <xs:enumeration value="right" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:attributeGroup name="cellhalign">
- <xs:annotation>
- <xs:documentation>
- horizontal alignment attributes for cell contents
-
- char alignment char, e.g. char=':'
- charoff offset for alignment char
- </xs:documentation>
- </xs:annotation>
- <xs:attribute name="align">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="left" />
- <xs:enumeration value="center" />
- <xs:enumeration value="right" />
- <xs:enumeration value="justify" />
- <xs:enumeration value="char" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="char" type="Character" />
- <xs:attribute name="charoff" type="Length" />
- </xs:attributeGroup>
-
- <xs:attributeGroup name="cellvalign">
- <xs:annotation>
- <xs:documentation>
- vertical alignment attributes for cell contents
- </xs:documentation>
- </xs:annotation>
- <xs:attribute name="valign">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="top" />
- <xs:enumeration value="middle" />
- <xs:enumeration value="bottom" />
- <xs:enumeration value="baseline" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- </xs:attributeGroup>
-
- <xs:element name="table" type="table.content">
- </xs:element>
-
- <xs:simpleType name="CAlign">
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="top" />
- <xs:enumeration value="bottom" />
- <xs:enumeration value="left" />
- <xs:enumeration value="right" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elFreeformExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:element name="caption">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Inline">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="align" type="CAlign" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:annotation>
- <xs:documentation>
- Use thead to duplicate headers when breaking table
- across page boundaries, or for static headers when
- tbody sections are
- rendered in scrolling panel.
-
- Use tfoot to duplicate footers when
- breaking table
- across page boundaries, or for static footers when
- tbody sections are rendered in scrolling panel.
-
- Use multiple tbody
- sections when rules are needed
- between groups of table rows.
- </xs:documentation>
- </xs:annotation>
-
- <xs:element name="thead" type="thead.content">
- </xs:element>
-
- <xs:element name="tfoot" type="tfoot.content">
- </xs:element>
-
- <xs:element name="tbody" type="tbody.content">
- </xs:element>
-
- <xs:element name="colgroup" type="colgroup.content">
- <xs:annotation>
- <xs:documentation>
- colgroup groups a set of col elements. It allows
- you to group
- several semantically related columns together.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="col" type="col.content">
- <xs:annotation>
- <xs:documentation>
- col elements define the alignment properties for
- cells in
- one or more columns.
-
- The width attribute specifies the width
- of the columns, e.g.
-
- width=64 width in screen pixels
- width=0.5*
- relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-
- <xs:element name="tr" type="tr.content">
- </xs:element>
-
- <xs:simpleType name="Scope">
- <xs:annotation>
- <xs:documentation>
- Scope is simpler than headers attribute for common
- tables
- </xs:documentation>
- </xs:annotation>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="row" />
- <xs:enumeration value="col" />
- <xs:enumeration value="rowgroup" />
- <xs:enumeration value="colgroup" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-
- <xs:annotation>
- <xs:documentation>
- th is for headers, td for data and for cells acting
- as both
- </xs:documentation>
- </xs:annotation>
-
- <xs:attribute name="nowrap">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="nowrap" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
-
- <xs:element name="th">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="abbr" type="Text" />
- <xs:attribute name="axis" />
- <xs:attribute name="headers" type="IDREFS" />
- <xs:attribute name="scope" type="Scope" />
- <xs:attribute name="rowspan" default="1" type="Number" />
- <xs:attribute name="colspan" default="1" type="Number" />
- <xs:attributeGroup ref="cellhalign" />
- <xs:attributeGroup ref="cellvalign" />
- <xs:attribute ref="nowrap" />
- <xs:attribute name="bgcolor" type="Color" />
- <xs:attribute name="width" type="Length" />
- <xs:attribute name="height" type="Length" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="td">
- <xs:complexType mixed="true">
- <xs:complexContent>
- <xs:extension base="Flow">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="abbr" type="Text" />
- <xs:attribute name="axis" />
- <xs:attribute name="headers" type="IDREFS" />
- <xs:attribute name="scope" type="Scope" />
- <xs:attribute name="rowspan" default="1" type="Number" />
- <xs:attribute name="colspan" default="1" type="Number" />
- <xs:attributeGroup ref="cellhalign" />
- <xs:attributeGroup ref="cellvalign" />
- <xs:attribute ref="nowrap" />
- <xs:attribute name="bgcolor" type="Color" />
- <xs:attribute name="width" type="Length" />
- <xs:attribute name="height" type="Length" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-
- <xs:complexType name="address.content" mixed="true">
- <xs:group ref="address.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="address.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="inline"></xs:group>
- <xs:group ref="misc.inline"></xs:group>
- <xs:group ref="address.children.elements" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:group name="address.children.elements">
- <xs:choice>
- <xs:element ref="p" />
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="applet.content" mixed="true">
- <xs:group ref="applet.children" />
- <xs:attributeGroup ref="coreattrs"></xs:attributeGroup>
- <xs:attribute name="codebase" type="URI"></xs:attribute>
- <xs:attribute name="archive" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute name="code" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute name="object" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute name="alt" type="Text"></xs:attribute>
- <xs:attribute name="name" type="NMTOKEN"></xs:attribute>
- <xs:attribute use="required" name="width" type="Length"></xs:attribute>
- <xs:attribute use="required" name="height" type="Length"></xs:attribute>
- <xs:attribute name="align" type="ImgAlign"></xs:attribute>
- <xs:attribute name="hspace" type="Pixels"></xs:attribute>
- <xs:attribute name="vspace" type="Pixels"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="applet.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="param.element.group" />
- <xs:group ref="block"></xs:group>
- <xs:group ref="form.element.group" />
- <xs:group ref="inline"></xs:group>
- <xs:group ref="misc"></xs:group>
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:group name="param.element.group">
- <xs:choice>
- <xs:element ref="param"></xs:element>
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="area.content">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attributeGroup ref="focus"></xs:attributeGroup>
- <xs:attribute default="rect" name="shape" type="Shape"></xs:attribute>
- <xs:attribute name="coords" type="Coords"></xs:attribute>
- <xs:attribute name="href" type="URI"></xs:attribute>
- <xs:attribute name="nohref">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="nohref"></xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute use="required" name="alt" type="Text"></xs:attribute>
- <xs:attribute name="target" type="FrameTarget"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="base.content">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attribute name="id" type="ID"></xs:attribute>
- <xs:attribute name="href" type="URI"></xs:attribute>
- <xs:attribute name="target" type="FrameTarget"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="basefont.content">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attribute name="id" type="ID" />
- <xs:attribute use="required" name="size" type="xs:anySimpleType" />
- <xs:attribute name="color" type="Color" />
- <xs:attribute name="face" type="xs:anySimpleType" />
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="br.content">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attributeGroup ref="coreattrs"></xs:attributeGroup>
- <xs:attribute default="none" name="clear">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="left"></xs:enumeration>
- <xs:enumeration value="all"></xs:enumeration>
- <xs:enumeration value="right"></xs:enumeration>
- <xs:enumeration value="none"></xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="col.content">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attribute default="1" name="span" type="Number"></xs:attribute>
- <xs:attribute name="width" type="MultiLength"></xs:attribute>
- <xs:attributeGroup ref="cellhalign"></xs:attributeGroup>
- <xs:attributeGroup ref="cellvalign"></xs:attributeGroup>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="colgroup.content">
- <xs:group ref="colgroup.children" />
- <xs:attributeGroup ref="attrs" />
- <xs:attribute default="1" name="span" type="Number" />
- <xs:attribute name="width" type="MultiLength" />
- <xs:attributeGroup ref="cellhalign" />
- <xs:attributeGroup ref="cellvalign" />
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:group name="colgroup.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element maxOccurs="unbounded" minOccurs="0" ref="col" />
- <xs:group ref="cdk:structural" />
- </xs:choice>
- </xs:choice>
- </xs:group>
- <xs:complexType name="dir.content">
- <xs:group ref="dir.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attribute ref="compact"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:group name="dir.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element maxOccurs="unbounded" minOccurs="0" ref="li" />
- <xs:group ref="cdk:structural" />
- </xs:choice>
- </xs:choice>
- </xs:group>
- <xs:complexType name="dl.content">
- <xs:group ref="dl.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attribute ref="compact"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="dl.children">
- <xs:choice>
- <xs:choice maxOccurs="unbounded">
- <xs:element ref="dt" />
- <xs:element ref="dd" />
- <xs:group ref="cdk:structural" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="fieldset.content" mixed="true">
- <xs:group ref="fieldset.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="fieldset.children">
- <xs:sequence>
- <xs:group ref="legend.element.group" />
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="block"></xs:group>
- <xs:group ref="form.element.group" />
- <xs:group ref="inline"></xs:group>
- <xs:group ref="misc"></xs:group>
- </xs:choice>
- </xs:sequence>
- </xs:group>
-
- <xs:group name="legend.element.group">
- <xs:choice>
- <xs:element ref="legend"></xs:element>
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="head.content">
- <xs:group ref="head.children" />
- <xs:attributeGroup ref="i18n"></xs:attributeGroup>
- <xs:attribute name="id" type="ID"></xs:attribute>
- <xs:attribute name="profile" type="URI"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="head.children">
- <xs:sequence>
- <xs:group ref="head.misc" />
- <xs:choice>
- <xs:sequence minOccurs="0">
- <xs:element ref="title" />
- <xs:group ref="head.misc" />
- <xs:sequence minOccurs="0">
- <xs:element ref="base" />
- <xs:group ref="head.misc" />
- </xs:sequence>
- </xs:sequence>
- <xs:sequence minOccurs="0">
- <xs:element ref="base" />
- <xs:group ref="head.misc" />
- <xs:element ref="title" />
- <xs:group ref="head.misc" />
- </xs:sequence>
- </xs:choice>
- </xs:sequence>
- </xs:group>
-
- <xs:complexType name="hr.content">
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="align">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="left"></xs:enumeration>
- <xs:enumeration value="center"></xs:enumeration>
- <xs:enumeration value="right"></xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="noshade">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="noshade"></xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="size" type="Pixels"></xs:attribute>
- <xs:attribute name="width" type="Length"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="html.content">
- <xs:group ref="html.children" />
- <xs:attributeGroup ref="i18n"></xs:attributeGroup>
- <xs:attribute name="id" type="ID"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:group name="html.children">
- <xs:sequence>
- <xs:element minOccurs="0" ref="head" />
- <xs:group maxOccurs="unbounded" minOccurs="0" ref="cdk:structural" />
- <xs:element minOccurs="0" ref="body" />
- </xs:sequence>
- </xs:group>
- <xs:complexType name="img.content">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attribute use="required" name="src" type="URI"></xs:attribute>
- <xs:attribute use="required" name="alt" type="Text"></xs:attribute>
- <xs:attribute name="name" type="NMTOKEN"></xs:attribute>
- <xs:attribute name="longdesc" type="URI"></xs:attribute>
- <xs:attribute name="height" type="Length"></xs:attribute>
- <xs:attribute name="width" type="Length"></xs:attribute>
- <xs:attribute name="usemap" type="URI">
- <xs:annotation></xs:annotation>
- </xs:attribute>
- <xs:attribute name="ismap">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="ismap"></xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="align" type="ImgAlign"></xs:attribute>
- <xs:attribute name="border" type="Length"></xs:attribute>
- <xs:attribute name="hspace" type="Pixels"></xs:attribute>
- <xs:attribute name="vspace" type="Pixels"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="input.content">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attributeGroup ref="focus"></xs:attributeGroup>
- <xs:attribute default="text" name="type" type="InputType"></xs:attribute>
- <xs:attribute name="name" type="xs:anySimpleType">
- <xs:annotation></xs:annotation>
- </xs:attribute>
- <xs:attribute name="value" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute ref="checked"></xs:attribute>
- <xs:attribute ref="disabled"></xs:attribute>
- <xs:attribute ref="readonly"></xs:attribute>
- <xs:attribute name="size" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute name="maxlength" type="Number"></xs:attribute>
- <xs:attribute name="src" type="URI"></xs:attribute>
- <xs:attribute name="alt" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute name="usemap" type="URI"></xs:attribute>
- <xs:attribute name="onselect" type="Script"></xs:attribute>
- <xs:attribute name="onchange" type="Script"></xs:attribute>
- <xs:attribute name="accept" type="ContentTypes"></xs:attribute>
- <xs:attribute name="align" type="ImgAlign"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="isindex.content">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attributeGroup ref="coreattrs"></xs:attributeGroup>
- <xs:attributeGroup ref="i18n"></xs:attributeGroup>
- <xs:attribute name="prompt" type="Text"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="link.content">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attribute name="charset" type="Charset"></xs:attribute>
- <xs:attribute name="href" type="URI"></xs:attribute>
- <xs:attribute name="hreflang" type="LanguageCode"></xs:attribute>
- <xs:attribute name="type" type="ContentType"></xs:attribute>
- <xs:attribute name="rel" type="LinkTypes"></xs:attribute>
- <xs:attribute name="rev" type="LinkTypes"></xs:attribute>
- <xs:attribute name="media" type="MediaDesc"></xs:attribute>
- <xs:attribute name="target" type="FrameTarget"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="map.content">
- <xs:group ref="map.children" />
- <xs:attributeGroup ref="i18n"></xs:attributeGroup>
- <xs:attributeGroup ref="events"></xs:attributeGroup>
- <xs:attribute use="required" name="id" type="ID"></xs:attribute>
- <xs:attribute name="class" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute name="style" type="StyleSheet"></xs:attribute>
- <xs:attribute name="title" type="Text"></xs:attribute>
- <xs:attribute name="name" type="xs:anySimpleType"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="map.children">
- <xs:choice>
- <xs:choice maxOccurs="unbounded">
- <xs:group ref="block"></xs:group>
- <xs:group ref="form.element.group" />
- <xs:group ref="misc"></xs:group>
- </xs:choice>
- <xs:group ref="area.element.group" maxOccurs="unbounded" />
- </xs:choice>
- </xs:group>
-
- <xs:group name="area.element.group">
- <xs:choice>
- <xs:element ref="area" />
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="menu.content">
- <xs:group ref="menu.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attribute ref="compact"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="menu.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element maxOccurs="unbounded" minOccurs="0" ref="li" />
- <xs:group ref="cdk:structural" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="meta.content">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attributeGroup ref="i18n"></xs:attributeGroup>
- <xs:attribute name="id" type="ID"></xs:attribute>
- <xs:attribute name="http-equiv" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute name="name" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute use="required" name="content" type="xs:anySimpleType">
- </xs:attribute>
- <xs:attribute name="scheme" type="xs:anySimpleType"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="object.content" mixed="true">
- <xs:group ref="object.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attribute name="declare">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="declare"></xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="classid" type="URI"></xs:attribute>
- <xs:attribute name="codebase" type="URI"></xs:attribute>
- <xs:attribute name="data" type="URI"></xs:attribute>
- <xs:attribute name="type" type="ContentType"></xs:attribute>
- <xs:attribute name="codetype" type="ContentType"></xs:attribute>
- <xs:attribute name="archive" type="UriList"></xs:attribute>
- <xs:attribute name="standby" type="Text"></xs:attribute>
- <xs:attribute name="height" type="Length"></xs:attribute>
- <xs:attribute name="width" type="Length"></xs:attribute>
- <xs:attribute name="usemap" type="URI"></xs:attribute>
- <xs:attribute name="name" type="NMTOKEN"></xs:attribute>
- <xs:attribute name="tabindex" type="Number"></xs:attribute>
- <xs:attribute name="align" type="ImgAlign"></xs:attribute>
- <xs:attribute name="border" type="Pixels"></xs:attribute>
- <xs:attribute name="hspace" type="Pixels"></xs:attribute>
- <xs:attribute name="vspace" type="Pixels"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="object.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="object.children.elements" />
- <xs:group ref="block" />
- <xs:group ref="inline" />
- <xs:group ref="misc" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:group name="object.children.elements">
- <xs:choice>
- <xs:element ref="param" />
- <xs:element ref="form" />
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="ol.content">
- <xs:group ref="ol.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attribute name="type" type="OLStyle"></xs:attribute>
- <xs:attribute ref="compact"></xs:attribute>
- <xs:attribute name="start" type="Number"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="ol.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element maxOccurs="unbounded" minOccurs="0" ref="li" />
- <xs:group ref="cdk:structural" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="optgroup.content">
- <xs:group ref="optgroup.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attribute ref="disabled"></xs:attribute>
- <xs:attribute use="required" name="label" type="Text"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="optgroup.children">
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="unbounded" ref="option" />
- <xs:group ref="cdk:structural" />
- </xs:sequence>
- </xs:group>
-
- <xs:complexType name="option.content" mixed="true">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attribute name="selected">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="selected"></xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute ref="disabled"></xs:attribute>
- <xs:attribute name="label" type="Text"></xs:attribute>
- <xs:attribute name="value" type="xs:anySimpleType"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="param.content">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attribute name="id" type="ID"></xs:attribute>
- <xs:attribute use="required" name="name" type="xs:anySimpleType">
- </xs:attribute>
- <xs:attribute name="value" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute default="data" name="valuetype">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="data"></xs:enumeration>
- <xs:enumeration value="ref"></xs:enumeration>
- <xs:enumeration value="object"></xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="type" type="ContentType"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="script.content" mixed="true">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attribute name="id" type="ID"></xs:attribute>
- <xs:attribute name="charset" type="Charset"></xs:attribute>
- <xs:attribute use="required" name="type" type="ContentType"></xs:attribute>
- <xs:attribute name="language" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute name="src" type="URI"></xs:attribute>
- <xs:attribute name="defer">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="defer"></xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression"></xs:restriction>
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute fixed="preserve" ref="xml:space"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="select.content">
- <xs:group ref="select.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attribute name="name" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute name="size" type="Number"></xs:attribute>
- <xs:attribute name="multiple">
- <xs:simpleType>
- <xs:union>
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="multiple" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType>
- <xs:restriction base="cdk:elMixedExpression" />
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute ref="disabled"></xs:attribute>
- <xs:attribute name="tabindex" type="tabindexNumber"></xs:attribute>
- <xs:attribute name="onfocus" type="Script"></xs:attribute>
- <xs:attribute name="onblur" type="Script"></xs:attribute>
- <xs:attribute name="onchange" type="Script"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="select.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element ref="optgroup" />
- <xs:element ref="option" />
- <xs:group ref="cdk:structural" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="style.content" mixed="true">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attributeGroup ref="i18n"></xs:attributeGroup>
- <xs:attribute name="id" type="ID"></xs:attribute>
- <xs:attribute use="required" name="type" type="ContentType"></xs:attribute>
- <xs:attribute name="media" type="MediaDesc"></xs:attribute>
- <xs:attribute name="title" type="Text"></xs:attribute>
- <xs:attribute fixed="preserve" ref="xml:space"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="table.content">
- <xs:group ref="table.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attribute name="summary" type="Text"></xs:attribute>
- <xs:attribute name="width" type="Length"></xs:attribute>
- <xs:attribute name="border" type="Pixels"></xs:attribute>
- <xs:attribute name="frame" type="TFrame"></xs:attribute>
- <xs:attribute name="rules" type="TRules"></xs:attribute>
- <xs:attribute name="cellspacing" type="Length"></xs:attribute>
- <xs:attribute name="cellpadding" type="Length"></xs:attribute>
- <xs:attribute name="align" type="TAlign"></xs:attribute>
- <xs:attribute name="bgcolor" type="Color"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="table.children">
- <xs:sequence>
- <xs:element minOccurs="0" ref="caption" />
- <xs:choice>
- <xs:element minOccurs="0" maxOccurs="unbounded" ref="col" />
- <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup" />
- </xs:choice>
- <xs:element minOccurs="0" ref="thead" />
- <xs:element minOccurs="0" ref="tfoot" />
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:choice>
- <xs:group ref="cdk:structural" />
- <xs:element minOccurs="0" maxOccurs="unbounded" ref="tbody" />
- <xs:element minOccurs="0" maxOccurs="unbounded" ref="tr" />
- </xs:choice>
- </xs:choice>
- </xs:sequence>
- </xs:group>
-
- <xs:complexType name="tbody.content">
- <xs:group ref="tbody.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attributeGroup ref="cellhalign"></xs:attributeGroup>
- <xs:attributeGroup ref="cellvalign"></xs:attributeGroup>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="tbody.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element maxOccurs="unbounded" minOccurs="0" ref="tr" />
- <xs:group ref="cdk:structural" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="textarea.content" mixed="true">
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attributeGroup ref="focus"></xs:attributeGroup>
- <xs:attribute name="name" type="xs:anySimpleType"></xs:attribute>
- <xs:attribute use="required" name="rows" type="Number"></xs:attribute>
- <xs:attribute use="required" name="cols" type="Number"></xs:attribute>
- <xs:attribute ref="disabled"></xs:attribute>
- <xs:attribute ref="readonly"></xs:attribute>
- <xs:attribute name="onselect" type="Script"></xs:attribute>
- <xs:attribute name="onchange" type="Script"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:complexType name="tfoot.content">
- <xs:group ref="tfoot.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attributeGroup ref="cellhalign"></xs:attributeGroup>
- <xs:attributeGroup ref="cellvalign"></xs:attributeGroup>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:group name="tfoot.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element maxOccurs="unbounded" minOccurs="0" ref="tr" />
- <xs:group ref="cdk:structural" />
- </xs:choice>
- </xs:choice>
- </xs:group>
- <xs:complexType name="thead.content">
- <xs:group ref="thead.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attributeGroup ref="cellhalign"></xs:attributeGroup>
- <xs:attributeGroup ref="cellvalign"></xs:attributeGroup>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
- <xs:group name="thead.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element maxOccurs="unbounded" minOccurs="0" ref="tr" />
- <xs:group ref="cdk:structural" />
- </xs:choice>
- </xs:choice>
- </xs:group>
- <xs:complexType name="title.content" mixed="true">
- <xs:group ref="cdk:structural" minOccurs="0" maxOccurs="unbounded" />
- <xs:attributeGroup ref="i18n"></xs:attributeGroup>
- <xs:attribute name="id" type="ID"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:complexType name="tr.content">
- <xs:group ref="tr.children" />
- <xs:attributeGroup ref="attrs"></xs:attributeGroup>
- <xs:attributeGroup ref="cellhalign"></xs:attributeGroup>
- <xs:attributeGroup ref="cellvalign"></xs:attributeGroup>
- <xs:attribute name="bgcolor" type="Color"></xs:attribute>
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="tr.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element maxOccurs="unbounded" minOccurs="0" ref="th" />
- <xs:element maxOccurs="unbounded" minOccurs="0" ref="td" />
- <xs:group ref="cdk:structural" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-
- <xs:complexType name="ul.content">
- <xs:group ref="ul.children" />
- <xs:attributeGroup ref="attrs" />
- <xs:attribute name="type" type="ULStyle" />
- <xs:attribute ref="compact" />
- <xs:attributeGroup ref="cdk:core.attrs" />
- </xs:complexType>
-
- <xs:group name="ul.children">
- <xs:choice>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element maxOccurs="unbounded" minOccurs="0" ref="li" />
- <xs:group ref="cdk:structural" />
- </xs:choice>
- </xs:choice>
- </xs:group>
-</xs:schema>
16 years, 8 months