Условная группировка XSD

Я не совсем уверен, использую ли я правильный процесс или даже если это возможно, однако то, что я хочу сделать, это создать XSL-файл, который определяет следующую схему:


    
        Joe Blogs
        1235
        data
        data
        data
        data
    
    
        Jane Blogs
        1234
        data
        data
    
    
        Jane Blogs
        1234
        data
        data
        data
        data
    

Итак, в основном:

  • The tag is the root. It can be empty.
  • The tag can appear multiple times.
    • The tag must be acompanied by the tag .
    • The tag must be accompanied by the tags and .
      • The tag must only appear when (and associated tags) is present, but must not appear where and vica-verca.

Я попытался реализовать это с помощью элемента:



  
    
      
        
          
            
              
                
                
                
                
                
                
              
              
                
                
                
                
                
                
              
              
                
                
                
                
              
            
          
        
      
    
  

Любая помощь будет принята с благодарностью.

1
добавлено отредактировано
Просмотры: 1

1 ответы

Вы близки. Проблема в том, что, учитывая текущее объявление, средство проверки XSD не знает, когда видит начальный элемент name , какой из трех последовательностей, которые вы указали, должен выбрать. Невозможно смотреть вперед на вклад, чтобы сделать свой выбор; он должен иметь возможность перемещаться по модели контента без видимости.

Реформирование вашего сложного типа таким образом устраняет эту проблему.


  
    
    
    
      
        
        
      
      
        
        
          
                            
        
        
        
      
    
  

Как вы можете видеть, все, что я сделал, - это фактор из общих префиксов между вашими выборами и помещать их перед точкой выбора.

1
добавлено
Большое вам спасибо, вы спасатель жизни.
добавлено автор Lee, источник